[racket-dev] P4P: A Syntax Proposal
>> - The whole distinction between operators and functions is a lie!
>>
> Except it's not. I've run into educators who taught Scheme who
> thought this way, and the accounts of Scheme they gave were nonsense.
>
Perhaps I overspoke; it was the idea that I didn't need *two* syntaxes for
calling (arithmetic) functions that impressed me. I was easily impressed,
in my youth :-)
>> * Are the brackets around expressions-in-function-position required, or
>> optional?
>
> Essential. That's how parsing stays unambiguous. (That's why I have
> a do: keyword, not just {...}, as Everett proposed.)
>
Whoops, I see that now; "fun: (x) in identity(x)(3)" would be ambiguous.
Amazing how actually writing down an example can help :-)
>> I ¹d prefer optional, again just for pedagogical elegance when
>> introducing anonymous functions
>
> Not true at all. Here are two examples:
>
Yeah, most examples work fine; it's just that a very-first example of fun:
might just be an application; I present "{fun: (x) in +(x,x)}(3)" and that
example would likely be the first and last time I type curly-brackets in
class. Also, if stepping, they can appear:
defvar: double = fun: (x) in +(x,x)
double(3)
A hand-eval begins by substituting the identifier (`double`), but we need to
add curly-braces even though there weren't any up in the text of the def'n:
double(3)
= {fun: (x) in (+x,x)}(3) ;Where'd the curly-braces appear from, prof?
(Not a biggie, and moot now that I agree that the curly-brace can¹t be made
optional.)
"P4P" -- a palliative for parentheses?
--Ian