Is there a visual programming environment that implements lambda calculus (either untyped or simply typed)?
Not specifically, but in my experience a natural way to introduce the lambda calculus visually is via templating. Starting with some diagram (essentially equivalent to an expression tree), let the person pull out some part of it leaving a whole. So from
here we go round the mulberry bush
we can go to:
(here we go round _) (the mulberry bush)
As soon as you try to pull something else out, you see the ambiguity:
(here _ go round _) (the mulberry bush) (we)
In text we use lambdas and variables to order how the blanks get filled in
(\ _what_ _who_ . here _who_ go round _what_ _what_ _what_) (the mulberry bush) (we)
and so on.
Immediately, I think of three things that are — um, off — about conventional notation:
(\ variable . expression) valuequickly puts a lot of space between
- Being able to repeat a variable is so easy to do with text, that you can easily fail to realize how significant an operation it is.
- Likewise, the between
f (g h)and
(f g) hmuch bigger than the notation suggests.
So it certainly would be neat to see a spacial lambda calculus that specifically addresses these problems.
Here's a paper on a lambda calculus based formalism for visual programs. (Haven't read it)
Also, not what you are looking for, but if you want to do some proofs in the simply typed lambda calculus, there is incredible.pm
(A super fun way of doing proofs)