Hacker News new | ask | show | jobs
by javajosh 4460 days ago
When you say "real-world problems" are you referring to the physical world? I don't expect that. I'd settle for using it to help me solve a mathematical problem. So far, all I see is a lot of hand-waving and not a lot of "this is a tool that can be applied to this sort of problem".
3 comments

A quick Google should point you in the direction of what people use lambda calculus for:

http://en.wikipedia.org/wiki/Lambda_calculus

One fascinating area for the use of lambda calculus is as a conceptual basis for the implementation of functional programming languages - indeed you could argue that a language is functional iff it can be mapped to the lambda calculus.

Edit: Although it is rather old (like me!) I have fond memories of "The Implementation of Functional Programming Languages" by Simon Peyton Jones:

http://research.microsoft.com/en-us/um/people/simonpj/papers... [PDF]

Another very cool thing is that you can translate expressions in the lambda calculus to SK[I] combinators - which means you can actually implement real programs (including recursion - e.g. using the Y-combinator) as two extremely simple functions - not very efficiently, mind you... :-)

http://en.wikipedia.org/wiki/SKI_combinator_calculus

> indeed you could argue that a language is functional iff it can be mapped to the lambda calculus.

Lambda calculus is a higher-order, applicative functional language. There are other kinds of functional language.

For example, kappa calculus is first-order. Joy is a pure functional programming language which is based around composition instead of application.

Thanks - it was quite a while ago that I was taught about this kind of stuff and for postgraduate study I ended up going down a AI/engineering route rather than programming languages - I now wish I had done the latter given the resurgence of interest in functional programming :-)
Lambda calculus is a simple model of substituting values into variables. For anyone studying the behaviour of such a system (eg. programming languages or Mathematical proofs) then LC is an nice, simple model to work with.

A physical-world analogy would be the billiard-ball model of atoms, which works well to describe the behaviour of gasses.

You're thinking about it from the wrong perspective, the lambda calculus is essentially the equivalent of assembly language for functional programming. The problems you can solve by building abstractions on top of it are infinite, it's utility comes from all properties we can deduce about it when building higher level abstractions, not from it not from being immediately useful to people programming at a higher level any more than x86 assembly is.