2 ms·
For the paper, we have decided to go as precise as possible, since its goal is to discuss the type-system semantics and not its syntax, so parentheses are every
by josevalim 3y ago
For the paper, we have decided to go as precise as possible, since its goal is to discuss the type-system semantics and not its syntax, so parentheses are everywhere.
You will for sure be able to drop the outer parens in your case and you _may_ be able to drop them on the function types too (to be decided). Ending up with something like this:
$ (integer -> integer) and (true -> false) and (false -> true) and (a -> a) when a: not(integer or boolean)
def negate(arg)
We will also allow intersections to be broken across multiple declarations:
$ integer -> integer
$ true -> false
$ false -> true
$ a -> a when a: not(integer or boolean)
def negate(arg)