Lambda Calculus
Artifact [7bb711b123]
Not logged in

Artifact 7bb711b123742d36e9afaf7bde6bb103c2c1a0a3:

Wiki page [Lambda Calculus] by bill 2012-04-26 15:41:36.
D 2012-04-26T15:41:36.814
L Lambda\sCalculus
P 21c8ce1d230a6d1ddc91ed1491394ecaf6a352b4
U bill
W 2808
<h1><i>Note: Work on Leisure has been moved to <a href="https://github.com/zot/Leisure">Github</a>.  If you have cloned it from tinyconcepts.com or elsewhere, please sync with the Github repository (and verify with that repository that there is no additional forwarding information :) ).</i></h1>

<h1>Although the rest of this may be out of date, by now, this repository should still work as it had.</h1>

<h1><i>Lambda Calculator</i> Fossil repository</h1>
By Bill Burdick (bill dot burdick at gmail dot com)

(BTW, [http://www.fossil-scm.org|Fossil] is like [http://git-scm.com/|Git]) [Notes]

<h2>This started out as maybe a little more than three implementations of untyped Lambda Calculus in JavaScript:</h2>

  *  A compiler
  *  A reducer that shows the steps it takes to reduce an expression
  *  A virtual machine (buggy)
  *  An LLVM code generator

The virtual machine is still a bit buggy :).

<h2>The current plans are to make this into a Lambda Calculus-based language, called <a href="doc/tip/lazp.wiki">Lazp</a> that supports metaprogramming (eval, parser macros)</h2>
Work in progress...

  *  get the old LC working in node.js (done)
  *  enhance the language to use the new LC-based AST
  *  debug the bytecode virtual machine?  Not sure if it's worth keeping.
  *  provide a compiler that generates C code
  *  provide a compiler that generates LLVM code, directly

<h2>Demo and Notes</h2>
Here are some overview <a href="doc/tip/slides.html">slides</a> and here is a video of the <a href="http://vimeo.com/36607865">talk</a>

Here is the <a href="doc/tip/evaluator.html">calculator</a>, which runs out of your browser.

Clicking the "Run" button compiles all of the LC code to JavaScript and runs the selected one.  The "Reduce" button shows the intermediate alpha, beta, and eta reductions required to reduce an LC expression.

There is a small version of Space Invaders, written in Lambda Calculus, here: [http://tinyconcepts.com/invaders.html].  It's also available in this repository, but the image links work better from a regular web server.  It's not finished, yet :)

Resources
  *  [http://this-statement-is-false.blogspot.com/2011/07/applied-lambda-calculus.html|My blog post on this]
  *  [http://www.infoq.com/interviews/john-hughes-fp|Talk on Why Functional Programming Matters]
  *  [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.63.7911&rep=rep1&type=pdf|Why Functional Programming Matters paper]
  *  [http://www.cs.princeton.edu/~dpw/popl/06/Tim-POPL.ppt|Tim Sweeney's (of Epic Games) talk]
  *  [http://existentialtype.wordpress.com/2011/04/24/the-real-point-of-laziness/|The Real Point of Laziness]
  *  [http://augustss.blogspot.com/2011/05/more-points-for-lazy-evaluation-in.html|More Points for Lazy Evaluation]
Z 08c44c696256c1d150575b6b40a013bf