![]() | This is not a Wikipedia article: It is an individual user's work-in-progress page, and may be incomplete and/or unreliable. For guidance on developing this draft, see
Wikipedia:So you made a userspace draft. Find sources:
Google (
books ·
news ·
scholar ·
free images ·
WP refs) ·
FENS ·
JSTOR ·
TWL |
The let-set calculus is a variant of the lambda calculus where two reserved words are defined: let and set. Any other word can be used as a variable. The terms are built from let, set and variables from application.
let is a function taking three arguments, A, B and C, that returns (Ax := C) (Bx := C).
set is a function taking three arguments, A, B and C, that returns (CA := B)
The substitution metaoperation is similar to the β-reduction in the lambda calculus and is represented as termvar := value.
The algorithm has two steps: lambda cleanup and abstraction elimination.
x is used as a special name in let, so it cannot appear in the lambda term. For that, α-conversion should be used.
Abstraction elimination is defined as a metaoperation T[term] with a helper metaoperation C[var, term]
The term (λy.λf.f y) in let-set calculus is (let (set y x) (let (set f x) (f y))).
When this term is applied to two terms A and B (substitutions done in one step):
The Y combinator transforms into let (set f x) ((let (set g x) (g g)) (let (set s x) (f (s s)))).
When applied to a function F:
![]() | This is not a Wikipedia article: It is an individual user's work-in-progress page, and may be incomplete and/or unreliable. For guidance on developing this draft, see
Wikipedia:So you made a userspace draft. Find sources:
Google (
books ·
news ·
scholar ·
free images ·
WP refs) ·
FENS ·
JSTOR ·
TWL |
The let-set calculus is a variant of the lambda calculus where two reserved words are defined: let and set. Any other word can be used as a variable. The terms are built from let, set and variables from application.
let is a function taking three arguments, A, B and C, that returns (Ax := C) (Bx := C).
set is a function taking three arguments, A, B and C, that returns (CA := B)
The substitution metaoperation is similar to the β-reduction in the lambda calculus and is represented as termvar := value.
The algorithm has two steps: lambda cleanup and abstraction elimination.
x is used as a special name in let, so it cannot appear in the lambda term. For that, α-conversion should be used.
Abstraction elimination is defined as a metaoperation T[term] with a helper metaoperation C[var, term]
The term (λy.λf.f y) in let-set calculus is (let (set y x) (let (set f x) (f y))).
When this term is applied to two terms A and B (substitutions done in one step):
The Y combinator transforms into let (set f x) ((let (set g x) (g g)) (let (set s x) (f (s s)))).
When applied to a function F: