Supercombinator: Difference between revisions

Content deleted Content added
No edit summary
Tags: Mobile edit Mobile app edit Android app edit
 
(28 intermediate revisions by 22 users not shown)
Line 1:
{{Short description|Bound and self-contained mathematical expression}}
A '''supercombinator''' is a [[mathematical]] [[mathematical expression|expression]] which is [[fully-bound]] and [[self-contained]]. It may either be a [[constant]] or a [[combinator]] where all the [[subexpressions]] are supercombinators.
{{disputed|date=November 2015}}
{{cleanup-rewrite|date=November 2015}}
 
A '''supercombinator''' is a [[mathematical]] [[mathematical expression|expression]] which is [[Free variables and bound variables|fully- bound]] and [[self-contained]]. It may either be either a [[constant (mathematics)|constant]] or a [[combinator]] where all the [[subexpressions]] are supercombinators. Supercombinators are used in the implementation of functional languages.
It may be defined, in mathematical terms, as the following:
 
In mathematical terms, a [[Lambda calculus|lambda expression]] ''S'' is a supercombinator of [[arity]] ''n'' if it has no free variables and is of the form λx<sub>1</sub>.λx<sub>2</sub>...λx<sub>n</sub>.''E'' (with ''n''&nbsp;≥&nbsp;0, so that lambdas are not required) such that ''E'' itself is not a [[lambda abstraction]] and any lambda abstraction in ''E'' is again a supercombinator.
:A supercombinator, $S of arity n is a [[lambda]] expression of the form
 
:&lambda;x<sub>1</sub>.&lambda;x<sub>2</sub>...&lambda;x<sub>n</sub>.E
== See also ==
:where E is not a lambda abstraction, such that:
* [[Lambda lifting]]
:i) $S has no free variables.
:ii) any lambda abstraction in E is a supercombinator.
:iii) n >= 0, that is there need be no lambdas at all.
 
==References==
*S. L. Peyton Jones, ''[https://research.microsoft.com/en-us/um/people/simonpj/papers/slpj-book-1987/ The Implementation of Functional Programming Languages]''. Prentice Hall, 1987.
 
[[Category:Functional programming]]
[[Category:Implementation of functional programming languages]]
[[Category:FormalLambda languagescalculus]]
 
 
{{mathcomp-sci-theory-stub}}
[[Category:Formal languages]]