Infunctional
Jump to navigation
Jump to search
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 Operators
Infunctional only has two operators.
->
- is the lambda abstraction, and
=
- is assignment.
Behavior
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
:
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
.
Examples
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?
Let 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))