@@ -66,14 +66,15 @@ simpleCase :: Bool -> Bool -> FC -> [([Name], Term, Term)] -> TC CaseDef
6666simpleCase tc cover fc []
6767 = return $ CaseDef [] (UnmatchedCase "No pattern clauses") []
6868simpleCase tc cover fc cs
69− = let pats = map (\ (avs, l, r) -> (avs, toPats tc l, (l, r))) cs
69+ = let pats = map (\ (avs, l, r) ->
70+ (avs, reverse (toPats tc l), (l, r))) cs
7071 chkPats = mapM chkAccessible pats in
7172 case chkPats of
7273 OK pats ->
7374 let numargs = length (fst (head pats))
7475 ns = take numargs args
7576 (tree, st) = runState
76− (match ns pats (defaultCase cover)) ([], numargs) in
77+ (match (reverse ns) pats (defaultCase cover)) ([], numargs) in
7778 return $ CaseDef ns (prune tree) (fst st)
7879 Error err -> Error (At fc err)
7980 where args = map (\i -> MN i "e") [0..]
@@ -123,9 +124,9 @@ toPat tc tms = evalState (mapM (\x -> toPat' x []) tms) []
123124 then return PAny
124125 else do put (n : ns)
125126 return (PV n)
126− toPat' (App f a) args = toPat' f (a : args)
127− toPat' (Constant (I c)) [] = return $ PConst (I c)
128− toPat' _ _ = return PAny
127+ toPat' (App f a) args = toPat' f (a : args)
128+ toPat' (Constant x@(I _)) [] = return $ PConst x
129+ toPat' _ _ = return PAny
129130
130131
131132data Partition = Cons [Clause]