![]() Logic was for modeling the structure of arguments, Euclid’s geometry the properties of space, algebra the properties of numbers Boolean algebra aspired to model the “laws of thought”.īut was there perhaps some more general and fundamental infrastructure: some kind of abstract system that could ultimately model or represent anything? Today we understand that’s what computation is. But each, in a sense, ultimately viewed itself as being set up to model something specific. Each of these was a formal system that allowed one to make deductions purely within the system. By the 1400s there was algebra, and in the 1840s Boolean algebra. In antiquity there was Aristotle’s logic and Euclid’s geometry. The idea of representing things in a formal, symbolic way has a long history. But tracing their history over the hundred years since they were invented, I’ve come to realize just how critical they’ve actually been to the development of our modern conception of computation-and indeed my own contributions to it. But the implication tends to be “But you probably don’t want to.” And, yes, combinators are deeply abstract-and in many ways hard to understand. Usually, $B$ is a $2$-element set, so that $A \to B = \mathcal.“In principle you could use combinators,” some footnote might say. Then there is no surjection $A \to (A \to B)$. If you know Cantor's diagonal argument, then you can discover the Y combinator.Ĭantor's Theorem Let $A,B$ be sets and suppose that there exists a fixpoint-free function $f \colon B \to B$. More to the point, I don't see how it can be practically used to compute functions as fixed-points of functionals.Īnyone got a good 'intuitive' explanation? g (x\ x)) \\īut I have no intuition as to why it works, or how someone might have come up with it. I can follow through the algebra and see that this is indeed a fixed-point combinator: The Y combinator is a higher-order function (functional) defined as Okay, now we get to the meat of the question. When there's no ambiguity, we can write function application by concatenation: $(\lambda x.x^2) 2 = 4$, and if we defined $f = \lambda x.x^2$ then $f\ 2 = 4$. Is the function that takes $x$ to $x^2$, so that e.g. Since the lambda calculus deals with these a lot, there's a special notation for them: But there's no reason why you can't have anonymous function. Note that $f$ might be a function whose range and domain are themselves function spaces - in fact this is the most common use of a fixed-point combinator: you can define a function $\alpha$ by specifying that it is the fixed point of another function $f$, and then compute $\alpha$ as $G(f)$.Īs mathematicians we're used to functions having names, eg $f:x\mapsto x^2$ is the function called $f$ that maps $x$ to $x^2$. This can be considered the defining equation of a fixed-point combinator. A fixed point combinator $G$ is a higher-order function (a functional, in mathematical language) that, given a function $f$, returns a fixed point of $f$. The Y combinator is a concept in functional programming, borrowed from the lambda calculus.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |