data List = { Nil, Cons Int List } defn add x y = { x + y } defn mul x y = { x * y } defn foldr f b l = { case l of { Nil -> { b } Cons x xs -> { f x (foldr f b xs) } } } defn main = { foldr add 0 (Cons 1 (Cons 2 (Cons 3 (Cons 4 Nil)))) + foldr mul 1 (Cons 1 (Cons 2 (Cons 3 (Cons 4 Nil)))) }