expression :: = variable | expression expression | lambda variable expression | (expression)
const I = a => a
// function are curried. beta reduction. beta normal form.
// ~ = lambda
// ~M f = ff
// M(I) == II = I ( beta normal form )
// M(M) == Infinite ( omega combinator )