[BUGFIX: checkin cata property, evalIO, incorrect order of args
martin.hofmann@uni-bamberg.de**20091218142458] hunk ./src/Data/Util.hs 23
-headM l = if null l then fail "empty list" else return . head $ l                 
+headM l = if null l then fail "empty list" else return . head $ l
+
+insertAt :: Int -> a -> [a] -> [a]
+insertAt 0 a xs     = a:xs
+insertAt _ a []     = [a]
+insertAt i a (x:xs) = x:(insertAt (i-1) a xs)
+                    
hunk ./src/Igor2/RuleDevelopment/Cata.hs 129
-        | (typeOf a)==(typeOf carg) = evalIO (name cr) (args ++ [a]) >>= 
+        | (typeOf a)==(typeOf carg) = evalIO (name cr) (insertAt i a args) >>= 
hunk ./src/Igor2/RuleDevelopment/Cata.hs 132
-    
+
+insertAt :: Int -> a -> [a] -> [a]
+insertAt 0 a xs     = a:xs
+insertAt _ a []     = [a]
+insertAt i a (x:xs) = x:(insertAt (i-1) a xs)
+   
hunk ./src/Igor2/RuleDevelopment/ListCata.hs 287
-    xs'    <- evalIO (name cr) (args ++ [xs]) >>= 
+    xs'    <- evalIO (name cr) (insertAt i xs args) >>= 