CZTOLJDEFGKJSKI calculus

From Esolang
Jump to navigation Jump to search
CZTOLJDEFGKJSKI calculus
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.

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 of K 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.