lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Sat, Jun 6, 2015 at 9:33 PM, Rodrigo Azevedo <rodrigoams@gmail.com> wrote:
> 3.4.10 – Function Calls
>
> The form
>
> functioncall ::= prefixexp ‘:’ Name args
>
> Arguments have the following syntax:
>
> args ::= ‘(’ [explist] ‘)’
> args ::= tableconstructor
> args ::= LiteralString
>
> can be used to call "methods". A call v:name(args) is syntactic sugar for
> v.name(v,args), except that v is evaluated only once.
>
> -------------------
>
> Let v be a usardata with a unary method, then
>
> v:abs() is a syntatic sugar for v.abs(v)
> v:reduce() is a syntatic sugar for v.reduce(v)
>
> etc
>
> This notation is very unpleasant. There is a problem if this behaviour of
> function calls
>
> v:abs is a syntativ sugar for v.abs(v)
> v:reduce is a syntatic sugar for v.reduce(v)
>
> was valid?
>
> If not, I really appreciate this new flavor.
>
> --
> Rodrigo Azevedo Moreira da Silva

1. Notation v:abs would create a special case, that is why it should be avoided.

2. v:abs can be ambiguous:

  v:abs
  (a)

Is it

1) v:abs(a)
 or
2) v:abs(); (a)

?

3. Personally, I'd prefer v:abs(). v:abs doesn't look like a call.

PS. Look into moonscript.

-- 


Best regards,
Boris Nagaev