# Example of a boolean 'not' function that fuses inifinitely through composition..
true : a -> b -> a = λt λf t
false : a -> b -> b = λt λf f
not : ((a -> b -> b) -> (c -> d -> c) -> e) -> e =
λboolean (boolean false true)
fusing_not : (b -> a -> c) -> a -> b -> c =
λboolean λt λf (boolean f t)
# Creates a Church numeral out of a native number
to_church (n: u24) : (a -> a) -> a -> a = switch n {
0: λf λx x
_: λf λx (f (to_church n-1 f x))
}
main: _ =
# Self-composes `not` 2^23-1 times and prints the result.
((to_church 0x7FFFF) fusing_not) # try replacing 'fusing_not' by 'not'. Will it still work?