+\r
+data List a = Nil | Cons a (List a)\r
+\r
+build :: (forall l. l -> (a -> l -> l) -> l) -> List a\r
+build f = f Nil Cons\r
+\r
+main = build (\nil cons -> cons (1 :: Integer) (cons (2 :: Integer) nil))\r
+-- \r
+(Cons 1 (Cons 2 Nil))
\ No newline at end of file