Re: [ANN] APow 1.0
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
- Subject: Re: [ANN] APow 1.0
- From: "Soni L." <fakedme@...>
- Date: 2017年2月23日 17:53:46 -0300
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.