Fixed point combinator
A fixed point combinator is a function which computes fixed pointss of other functions. A 'fixed point' of a function is a value left 'fixed' by that function; for example, 0 and 1 are fixed points of the squaring function.In certain formalizations of mathematics, such as the lambda calculus and combinatorial calculus, every function has a fixed point. In these formalizations, it is possible to produce a function, often denoted Y, which computes a fixed point of any function it is given. Since a fixed point x of a function f is a value that has the property f(x) = x, a fixed point combinator Y is a function with the property that f(Y(f)) = Y(f) for all functions f.
From a more practical point of view, fixed point combinators allow the definition of anonymous recursive functions. Somewhat surprisingly, they can be defined with non-recursive lambda abstractions.
One well-known fixed point combinator, discovered by Haskell B. Curry, is
- Y = λf.(λx.(f (x x)) λx.(f (x x)))
- Θ = (λx.λy.(y (x x y)) λx.λy.(y (x x y)))
- Θv = λh.(λx.(h λy.(y (x x y))) λx.(h λy.(y (x x y))))
- Yk = (L L L L L L L L L L L L L L L L L L L L L L L L L L L L)
where
- L = λabcdefghijklmnopqstuvwxyzr.(r (t h i s i s a f i x e d p o i n t c o m b i n a t o r))
| Table of contents |
|
2 See also 3 External link |
Consider the factorial function. A single step in the recursion of the factorial function is
Example
which is non-recursive. If the factorial function is like a chain (of factors), then the h function above joins two links. Then the factorial function is simply
The fixed point combinator causes the H combinator to repeat itself indefinitely until it trips itself up with (ISZERO 0) = TRUE.
See also
External link