2 ms·
FORTH and other concatenative languages are probably the closest to this. There's very little grammar to them or even need to define any custom identifiers, ot
by 0815test 8y ago
FORTH and other concatenative languages are probably the closest to this. There's very little grammar to them or even need to define any custom identifiers, other than newly-defined "words"; you could probably speak out FORTH code over a noisy radio connection, and the person at the other end would accurately input your code.
(It's interesting though that the author talks about the need for an "effect system for FORTH" to "understand operations on the FORTH stack" when typed lambda calculi basically give you exactly this. You can even just use postfix syntax for function application, and (optionally) numerical indexes instead of named variables to refer to active λ-abstractions (both of these as proposed by De Bruijn) and you end up with a quite minimal, FORTH-like syntax; since postfix application ( expr ) {as in `( expr )func`} essentially means "push expr on the stack", while lambda abstraction `[var] expr` is understood as "pop var from the stack and plug it into expr".
IOW, "application" and "abstraction" can be paired off immediately with no need for parsing as such, thus preserving a basic property of "concatenative" languages ala FORTH.)