--- /dev/null
+\r
+data List a = Nil | Cons a (List a)\r
+\r
+reverse :: List a -> List a\r
+reverse l = do \r
+ reverseAux accum Nil = accum\r
+ reverseAux accum (Cons h t) = reverseAux (Cons h accum) t\r
+ reverseAux Nil l\r
+ \r
+main = reverse (Cons (1 :: Integer) (Cons (2 :: Integer) (Cons (3 :: Integer) (Cons (4 :: Integer) Nil))))\r
+--\r
+(Cons 4 (Cons 3 (Cons 2 (Cons 1 Nil))))
\ No newline at end of file