• Subject: Re: syntax sugar for functions
• From: Coda Highland <chighland@...>
• Date: Fri, 8 Oct 2021 07:58:42 -0500

On Fri, Oct 8, 2021, 5:04 AM eugeny gladkih <john@drweb.com> wrote:

> On 8 Oct 2021, at 09:49, Robert Burke <sharpobject@gmail.com> wrote:
>
> Hello,
>
> Indeed, the syntax proposed is currently valid:
>
>> a = setmetatable({}, {__call=function(_,x) print(x[1][1]) end, __add=function(a,b) return b end})
>> (a){{ a + 2 }}
> 2

JS way:

(a) => a + 2
() => b + 2
=> b+2

LISP like

` b+2
(a) ` a+2

both are worse

>
> On Thu, Oct 7, 2021 at 6:59 PM Spar <developspartv@gmail.com> wrote:
>>
>> Your syntactic sugar basically adds entirely new syntax which is not used anywhere in language. These {{ }} are crazy and ambiguous
>> On 7 Oct 2021, 12:56 +0300, eugeny gladkih <john@drweb.com>, wrote:
>>
>> hi,
>>
>> what about funny syntax sugar for functions definition, lazy people are welcome to upvote
>>
>> function( a ) return a + 2 end -> (a){{ a + 2 }}
>> function() do-something end -> (){{ do-something }}
>> {{ do-something }}
>>
>> good for small functions passing as parameter. the idea is that list in {{ }} returns the last calculated _expression_ (or the list)
>>
>> --
>> Yours sincerely, Eugeny.
>> +33 6 38 52 27 93

--
Yours sincerely, Eugeny.
+33 6 38 52 27 93

You missed the point. The point is that the syntax you suggested already has a valid parse in Lua, and therefore it cannot be used as there is no way for the parser to tell which meaning you intended.

Something like this might actually work:

![a, b](a + b)

I'm not saying it's a good idea, but currently the ! operator can't be followed by a square bracket, so it could be created as a Power Patch if you really wanted to do it.