I have written some code now in this λ calculus and pause to report some resulting insights.
These observations bear on the priority of the language enhancements listed here.
- One character variables, even with Yi, are a pain.
I suspect it is practically necessary to allow multi character <ident>s.
Terminating them as we terminate numerals is easy and will add an occasional necessary space where identifiers abut.
We will need an honest symbol table instead of an array of ints.
I shall deal with the pain a bit longer however.
I want to work in the mode that the early developers of these notions found useful.
Their work consists of bodies of arguments in English about categories of formal expressions intermixed with small to middle size fragments of quasiquoted formal expressions.
The informal identifiers in these quasiquotations are single letters with scopes from a paragraphs to a book, or like Y, many books.
Programming languages, by contrast, have large collections of formal text, together with English text that needs to talk about parts of the program.
In programming the English is in support of the formal text.
In mathematics it is the other way round.
- In the spirit of exploring the 40's styles, I am tempted by Church’s extensions where (λab) becomes (λa.b).
I think these should be introduced before the multi character <ident>s.
The two extensions are compatible.
Files with “1.” in the name have code and test files for the strict syntax.
Those with “2.” in the same positions allow the relaxed syntax.
- There is a problem with lists—what is the empty list and what is null??
We could use ordered triples whose first element is a truth value but perhaps we can do better.
- The combinator form of programs are like a language with no subroutine construct.
Reuse of code is thereby difficult or not generally possible by techniques I know.