import "JavaBuiltin" as Java (+) = Java.iadd (-) = Java.isub (*) = Java.imul data List a = Nil | Cons a (List a) compose :: List (a -> a) -> a -> a compose Nil x = x compose (Cons h t) x = compose t (h x) succ x = x + 1 prec x = x - 1 double x = x * 2 f = compose (Cons succ (Cons double (Cons prec Nil))) main = f 13 -- 27