Infunctional is a small, minimalist dysfunctional programming language that relies on infix notation. In addition, all lambda abstractions accept two arguments instead of one.
Infunctional only has two operators.
- is the lambda abstraction, and
- is assignment.
Variable names are 1 character long:
a b c
The lambda abstraction is represented by the arrow:
ab -> c
Variable "assignment" is done by the
= operator. They are the equivalent to C's
#define in that they perform simple textual replacements before the program is parsed.
some_variable = (xy -> x)
Function calls are done by placing the lambda expression in between its arguments. The following evaluates to
a(xy -> x)b
Function calls are left-associative:
a(xy -> x)b(xy -> x)c is equivalent to (a(xy -> x)b)(xy -> x)c
Both evaluate to
A Twisted Version of Church Numerals
zero = (sz -> z) one = (sz -> zsz) two = (sz -> zs(zsz)) plus = (xy -> (sz -> (syz)s(sxz)))
Binary Church Numerals?
z represent zero,
o represent one, and
p represent an arbitrary cons function.
zero = (pzo -> z) one = (pzo -> o) two = (pzo -> opz) three = (pzo -> opo) four = (pzo -> op(zpz)) five = (pzo -> op(zpo))