Yeah. If you want it to look more like official lambda calculus notation you can give the ring a formal parameter:
and then when you call it with
(ab)
as input...and after substitution it's
It's kinda too bad that our notation for calling a function is less elegant than the text version. I'm working on a project that has
and
so that example would be
... but I need Jens to implement a slight change to how upvars work, to make it possible. Then I can make an activity in which you implement arithmetic and all that, in exactly lambda calculus notation. Jens was resistant but I think we have agreed on a way to do it that's just enough of a change to make my project work without breaking things like


(The issue is that I want to limit the scope of an upvar to the expression containing it, but this SET block needs the scope of the upvar to continue after the SET call. The current definition of upvars breaks recursive lambdas, so this
which should compute the factorial of 3 currently returns 4 instead of 6.)