CZTOLJDEFGKJSKI calculus
Jump to navigation
Jump to search
Paradigm(s) | functional |
---|---|
Designed by | User:Challenger5 |
Appeared in | 2023 |
Computational class | Turing complete |
Reference implementation | Unimplemented |
Influenced by | Lazy K |
File extension(s) | .cztoljdefgkjski |
The CZTOLJDEFGKJSKI calculus is a derivative of Lazy K named after User:olus2000. Unlike Lazy K, it is (mostly) strictly evaluated (call-by-value) and uses a different set of combinators.
Symbol | Name | Behavior (λ-term) |
---|---|---|
C |
cardinal | λ a b c → a c b
|
Z |
strict fixed point | λ a b → a (Z a) b
|
T |
thrush | λ a b → b a
|
O |
owl | λ a b → b (a b)
|
L |
lark | λ a b → a (b b)
|
J |
jay | λ a b c d → a b (a d c)
|
D |
dove | λ a b c d → a b (c d)
|
E |
eagle | λ a b c d e → a b (c d e)
|
F |
finch | λ a b c → c b a
|
G |
goldfinch | λ a b c d → a d (b c)
|
K |
kestrel | λ a b → a
|
J |
jota | λ a → a S K
|
S |
starling | λ a b c → a c (b c)
|
K |
lazy kestrel | λ a b → (eval b; eval a)
|
I |
idiot | λ a → a
|
A few other differences from Lazy K:
- Only the Unlambda syntax can be used, but with capitalized combinator names.
- Note that some combinators have multiple definitions. The parser cycles through which definition is used every time the combinator appears in the program. So if you write
``GKK
, the first use ofK
refers to the kestrel, but the second refers to the lazy kestrel. - The lazy kestrel is the only combinator in the language which violates the call-by-value reduction model. When passed its first argument, it does not immediately evaluate it; instead, it waits for a second argument and evaluates that one first before finally evaluating and returning its first argument.