app :: (Integer -> Integer) -> ((Integer -> Integer) -> Integer) app f = do a = f 1 \g -> g a main = app (\x -> x) (\x -> x) -- 1