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==