-   
- data Foo a = F (Foo a -> a -> a) 
-   
- foo :: Foo a -> Foo a -> a -> a 
- foo (F f) g x = f g x 
-   
- --m = F (\f x -> if x > 10 then x else foo f m (x + 1)) 
- m = F (\f x -> foo f m (x + 1)) 
- n = F (\f x -> foo f n (x + 1)) 
-   
				CmRhdGEgRm9vIGEgPSBGIChGb28gYSAtPiBhIC0+IGEpCgpmb28gOjogRm9vIGEgLT4gRm9vIGEgLT4gYSAtPiBhCmZvbyAoRiBmKSBnIHggPSBmIGcgeAoKLS1tID0gRiAoXGYgeCAtPiBpZiB4ID4gMTAgdGhlbiB4IGVsc2UgZm9vIGYgbSAoeCArIDEpKQptID0gRiAoXGYgeCAtPiBmb28gZiBtICh4ICsgMSkpCm4gPSBGIChcZiB4IC0+IGZvbyBmIG4gKHggKyAxKSkKCm1haW4gPSBwcmludCAkIGZvbyBuIG0gNQ==