lua-users home
lua-l archive

Re: [ANN] APow 1.0

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


On 23/02/17 01:46 PM, Soni L. wrote:
On 23/02/17 01:44 PM, Soni L. wrote:
On 23/02/17 01:39 PM, Egor Skriptunoff wrote:
On Sun, Feb 19, 2017 at 12:20 AM, Soni L. <fakedme@gmail.com <mailto:fakedme@gmail.com>> wrote:
 local notnil = require "notnil".notnil
 local function f(x)
 x = notnil ^ x
 end
 assert(pcall(f, 1))
 assert(not pcall(f, nil))
Unfortunately, this is not extendable to chained annotations like the following:
local function f(x, y, z)
 notnil ^ x ^ y ^ z
 -- do something
end
due to right-associativity of "annotation operator"
Fortunately, that's a syntax error anyway. And what was it supposed to return? x? y? z? It can't return all 3.
And keep in mind, right-associativity is what lets you chain annotations in the first place.
Let's say you want a typechecked annotation, using typecheck[1]:
local myann = apow.annotation ^ typecheck.checked ^ function(self, target) end Not that this particular case is useful (it'll return nil if there's a type error, but won't return an error message), but you wouldn't be able to do this with left-associativity.
[1] http://marc.info/?l=lua-l&m=148755896416687&w=2
--
Disclaimer: these emails may be made public at any given time, with or without reason. If you don't agree with this, DO NOT REPLY.

AltStyle によって変換されたページ (->オリジナル) /