Block Lang

MIT Scratch, but for lambda calculus, because we all have trouble finding the 'λ'-key, when trying to type it.

General idea

Lambda calculus, but a visual drag-n-drop application, a bit like MIT Scratch

Theme: Beautiful assembly

Putting blocks together counts as assembly

The beautiful part, is animating the reductions (Not finished yet)

Build instruction

cargo run

Or

cargo run --features bevy/dynamic to avoid having to recompile bevy.

How 2 use

This program is for making lambda calculus expressions.

Lambda consists of three elements

  • Variables x is the green block
  • Functions λx.x is the red block
  • Applications (λx.x) x is the purple block

Step by step example

Press a to make an application. The block will now follow your mouse cursor, until you click somewhere on the canvas.

Now press f to pay respect to make a function, and place it on the left side of the application.

Then press v to make a variable and place it on the top-half of the function.

Hover on the varible, press c, and then click the function block. Now the variable is bound to the function.

Make another function, place it on the right side of the application and insert a variable on the bottom.

Now hover the mouse directly on the frame of the application and press r. That will read the expression, show it in text form on the sidebar. It will also reduce the expression, and show the reduced expression in text form, below the original expression.