Sounds to me like another reason for deprecating this special syntax (and replacing it with an improved ccall, as part of the jn/ccall3 WIP) :)
On Monday, August 18, 2014, Elliot Saba <[email protected] <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: > Probably because of our special parsing of & in ccall invocations. > -E > > > On Mon, Aug 18, 2014 at 7:14 PM, Stefan Karpinski <[email protected]> > wrote: > >> Yeah, I forget exactly why you can't to that with & but there's some >> parsing ambiguity. >> >> >> On Mon, Aug 18, 2014 at 6:33 PM, ggggg <[email protected]> wrote: >> >>> Ok, thanks. Although it doesn't seem to be the case for |, eg "|(true, >>> false)" works out of the box. >>> >>> >>> On Monday, August 18, 2014 4:24:31 PM UTC-6, Stefan Karpinski wrote: >>> >>>> This are some of those few operators that need parens to be used in >>>> function call syntax: >>>> >>>> julia> (&)(3,5) >>>> 1 >>>> >>>> julia> (|)(3,5) >>>> 7 >>>> >>>> >>>> This isn't required in unambiguous situations like as an argument to >>>> another function: >>>> >>>> julia> reduce(|, 0:8) >>>> 15 >>>> >>>> >>>> >>>> >>>> On Mon, Aug 18, 2014 at 6:20 PM, ggggg <[email protected]> wrote: >>>> >>>>> Is there a named function that does what & does, eg "&(a,b) == a&b"? I >>>>> actually want a multi argument version like "$(a,b,c...)". Also is that >>>>> the name of that function is not "&" and "& is not overloadable? The same >>>>> is not true of "|". >>>>> >>>>> *julia> **a = zeros(Bool,10);b=[randbool() for j=1:10];* >>>>> >>>>> *julia> **a&b==b* >>>>> >>>>> *false* >>>>> >>>>> *julia> **a|b==b* >>>>> >>>>> *true* >>>>> >>>>> *julia> **|(a,b)==b* >>>>> >>>>> *true* >>>>> >>>>> *julia> **&(a,b)==b* >>>>> >>>>> >>>>> *ERROR: unsupported or misplaced expression & * >>>>> *julia> **&(a,b) = a&b* >>>>> >>>>> *ERROR: syntax: invalid assignment location* >>>>> >>>>> Julia even seems to think & is a function >>>>> >>>>> *julia> **&* >>>>> >>>>> *& (generic function with 35 methods)* >>>>> >>>>> >>>>> >>>> >> >
