comp :: (b -> c) -> (a -> b) -> (a -> c)
comp f g = \x -> f (g x)
comp' :: (b -> c) -> (a -> b) -> (a -> c)
comp' f g x = f (g x)
comp'' :: (b -> c) -> ((a -> b) -> (a -> c))
comp'' f = \g -> \x -> f (g x)
-- foldRose :: (a -> [b] -> b) -> Rose a -> b
-- foldRose f :: Rose a -> b
-- map (\ra -> foldRose f ra) === map (foldRose f)
foo x = f (g x) -- foo = f . g