[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Lightweight syntax: a dissident view
- From: Mark Hamburg <mark@...>
- Date: Fri, 26 Nov 2010 17:36:20 -0800
On Nov 26, 2010, at 2:49 PM, Doug Lua wrote:
> If the form is to be limited to an expression, I think LHF's syntax is the best I've seen so far - even with the '\' being in two different places on two keyboards in my house!
>
> \x,y,z(x*y+z) --> function(x,y,z) return x*y+z end
>
> It's concise and seems to have the fewest (zero?) ambiguities.
My issues with this syntax:
1. It looks weird if I like to use a little more whitespace:
\ x, y, z ( x * y + z )
Something about the form makes it want to clench more tightly than other forms.
2. It inverts the meaning of () with respect to multiple value return. In particular, if we call a function within the lambda and only want one result, we need to write:
\x((f(x)))
With the parentheses meaning from the outside in: results, single value, call.
Without multiple returns from short functions, the following would work:
\( x, y, z ) => x * y + z
If one wanted multiple returns, then one could abuse square brackets:
\( x, y, z ) => [ x * y + z, x + y * z ]
And for those who like things tighter, the parentheses around the arguments don't actually make the form more readily parsable though they do make it look more like a function declaration (and resolve my whitespace issues).
If one insists on support for statements, then there is the option to support:
\( x, y, z ) do
local a = random()
=> x * a + y * z
end
But then win here over traditional syntax seems small and we probably need examples of why statement support is worth it.
Mark
- References:
- Re: Re: Re: Lightweight syntax: a dissident view, Gunnar Zötl
- Re: Re: Re: Lightweight syntax: a dissident view, Luis Carvalho
- Re: Re: Re: Lightweight syntax: a dissident view, Axel Kittenberger
- Re: Re: Re: Lightweight syntax: a dissident view, Pierre-Yves Gérardy
- Re: Re: Re: Lightweight syntax: a dissident view, Roberto Ierusalimschy
- Re: Re: Re: Lightweight syntax: a dissident view, Mateusz Czaplinski
- Re: Re: Re: Lightweight syntax: a dissident view, Axel Kittenberger
- Re: Lightweight syntax: a dissident view, Philippe Lhoste
- Re: Lightweight syntax: a dissident view, Pierre-Yves Gérardy
- Re: Lightweight syntax: a dissident view, Mark Hamburg
- Re: Lightweight syntax: a dissident view, Pierre-Yves Gérardy
- Re: Lightweight syntax: a dissident view, Pierre-Yves Gérardy
- Re: Lightweight syntax: a dissident view, Axel Kittenberger
- Re: Lightweight syntax: a dissident view, steve donovan
- Re: Lightweight syntax: a dissident view, phlnc8
- Re: Lightweight syntax: a dissident view, Doug Lua