Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> If you find this sort of thing interesting, though, I'd recommend learning the lambda calculus instead. The lambda calculus is simpler, more well known, and more useful (it's a model of functions, instead of some made up rules about trees).

I was with you all the way up until here.

The lambda calculus is only more useful because it's become the basis for a lot of existing programming languages. Its made up rules are no more fundamental than the made-up rules of any other calculus, tree calculus included. They just seem more fundamental because they form the basis of most functional programming today.

I'm also unconvinced that the lambda calculus itself is meaningfully simpler. It typically has three syntactic components and two reduction operations, compared to one syntactic component and five reduction operations—that gives the lambda calculus a very small edge in moving parts, but it's very small.

The only way in which I could agree with you is that learning the lambda calculus first is going to be easier because there's so much more material on it. But that's not because the fundamental properties of the lambda calculus, it's because Church came first.



> The lambda calculus is only more useful because it's become the basis for a lot of existing programming languages.

But there's a reason for that. Functions make a good basis for programming languages. It's not the only good basis! Concatenative combinators make a good basis too: see Factor and Joy.

If you take the lambda calculus and add numbers and a few operations on them, it's easy to program in it. Likewise for the concatenative calculus. But not so for NAND gates or SK combinators. You certainly can do anything you want with them, but doing so feels more like solving a logic puzzle than programming. I am likewise skeptical about the tree calculus.


I'm skeptical that we'd feel that way if Church didn't come first. His work defined the field and shaped the way we all think about programming in profound ways that make it very difficult to distinguish how natural one is over the other.


Turing published the same year as Church, couple of months later. Church's advantage was very small.

Turing machine includes write over some place, thus it models a calculating man with infinite paper, infinite pencil and infinite eraser. Lambda calculus models calculating man with infinite paper and infinite pencil. Lambda calculus has very substantial advantage here.


Maybe for some people. Personally I find the concatenative calculus more natural to think about/in than the lambda calculus!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: