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

Working on a Lambda Calculus Interpreter variant in Ruby called Lispish that currently parses and evaluates named expressions only.

Why?

Because many lambda calculus interpreter variants "cheat" by using the lambda already built into the programming language being used.

So you don't really get to learn how the alpha-conversion, beta-reduction, and eta-conversion work, and so on, magic happens.

I have a hard time picturing things functionally and can't readily read Haskell or Coq or Idris or any of those so the many many lambda calculus toy interpreters out there are opaque to me. I can read procedural/imperative/object-oriented code so I thought I'd build it in Ruby, and put it on a website with documentation.

Currently struggling to get nameless representations working.

One nice design feature is that I've used Parslet which is a “A small Ruby library for constructing parsers in the PEG (Parsing Expression Grammar) fashion.”

Another feature is that I've built a suite a lambda expression test cases (about 60 in total) which believe it or not is unique afaict. You' be surprised at the corner cases.

Want to be able to switch between different evaluation strategies and language flavours. Want to add nice abstract syntax tree diagramming using D3.

Finally, once that base is finished I want to have a a crack at adding types :)



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

Search: