IMO Lambda calculus should be taught wider in CS programs. It brings useful models, builds (if one likes theory) good background to functional programming paradigms, etc.<p>However, to me, this post was hard to read. Wikipedia <a href="https://en.wikipedia.org/wiki/Lambda_calculus" rel="nofollow">https://en.wikipedia.org/wiki/Lambda_calculus</a> provides a much better introduction: from informal motivation to formal descriptions. My 2c.
<i>My team at Vivint, the Space Monkey group, stopped doing whiteboard interviews a while ago. We certainly used to do them, but we’ve transitioned to homework problems or actually just hiring a candidate as a short term contractor for a day or two to solve real work problems and see how that goes. Whiteboard interviews are kind of like Festivus but in a bad way: you get the feats of strength and then the airing of grievances. Unfortunately, modern programming is nothing like writing code in front of a roomful of strangers with only a whiteboard and a marker, so it’s probably not best to optimize for that.</i>
Extra weirdness with this turing-complete combinatory logic with only a single combinator [1,2]. Combinatory logic being like lambda-calculus but where are only allowed to use some predefined functions and function application (you can't create your own functions). Bonus: since iota/jot/zot only have 1 symbol + application, programs are binary trees (with the combinator in the leaves) which we can write in prefix order as "1" for leaf and "0<program><program>" for node. And now (modulo some io details) we have a cool language where any bitstring is a valid program.<p>[1] <a href="http://www.nyu.edu/projects/barker/Iota/zot.html" rel="nofollow">http://www.nyu.edu/projects/barker/Iota/zot.html</a>
[2] <a href="https://en.wikipedia.org/wiki/Iota_and_Jot" rel="nofollow">https://en.wikipedia.org/wiki/Iota_and_Jot</a>
Previously at <a href="https://news.ycombinator.com/item?id=13914004" rel="nofollow">https://news.ycombinator.com/item?id=13914004</a>.
Factorials in pure lambda calculus, compiled to native code and running in non-geological time:<p><a href="http://www.flownet.com/ron/lambda-calculus.html" rel="nofollow">http://www.flownet.com/ron/lambda-calculus.html</a>
Could anyone describe practical benefits to studying lambda calculus (other than, perhaps, to better understand the underlying concepts in LISP)? It seems kind of interesting because it is a way to describe what programs do with a very small number of building blocks. But why is it useful? What insights does it bring?