5
\$\begingroup\$

This includes tips for all related derivatives, as coding in these langs often primarily consists of writing the function in the lambda calculus and then compiling it down at the end.

Among others, this includes tips for:

Please post one tip per answer.

We have one tips page already for binary lambda calculus here. However it only has one answer, and it's a tip for the general calculus; not binary specific. We'll have to decide if we want to keep that question open.

\$\endgroup\$
4

1 Answer 1

2
\$\begingroup\$

Implementations on the Web

For those who are into standard Lambda calculus/combinator calculus, it is a shame that it isn't easy to find an easy-to-use interpreter and converter, especially the ones available on a web page. Here are some that I know of.

  • aditsu's interpreter runs SKIBC expressions and outputs a reduced lambda term.
  • Ben Lynn has several interpreters and converters on their web site. Note that each one accepts slightly different syntax, so check out the example program(s).
    • plain lambda calculus: evaluates lambda calculus expressions and shows the result in a raw form, like aditsu's. You can write auxiliary definitions.
    • combinatory logic: takes a lambda term and converts to SK calculus.
    • SK-based compiler: takes a lambda program (with auxiliary definitions), compiles to SK-based intermediate representation, and evaluates it to a Church numeral.
    • Crazy L: takes a lambda program (with auxiliary definitions and predefined combinators) in various syntaxes, compiles to SKIBC intermediate form, and evaluates it to a Church numeral. This one apparently supports inputs too.

Crazy L can be used to demonstrate simple programs in LC or SKI(BC), but also used as its own language for golfing.

I'm planning to write one that can handle various I/O formats other than Church numerals, and can compile lambda expressions to SKI(BC) and BLC (and maybe another encoding of my own). I'll update when I get it to a usable state.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.