From: Marcelo M. <mm...@ac...> - 2006-01-08 20:21:02
|
Mathieu Bouchard wrote: >On Sun, 8 Jan 2006, Marcelo Matus wrote: > > =20 > >>Also, it seems from here >> http://www.perl.com/doc/manual/html/lib/overload.html >>that the logical operators (&&,||) are not in the list of operators, an= d the >>"~" and "!" are understood as bit operators. >>note that in python you can't overload 'and' or 'or' either, so, it see= ms a >>common issue. >> =20 >> > >"~" is a bit operator and belongs to the same family as "&" "|" "^". > >"!" is not a bit operator, it would belong in the same family as "&&"=20 >"||" given the way it understands its values, but unlike the two others,= =20 >it's not a shortcircuit operator, so it's a special case among the speci= al=20 >cases. Why it was put in "bit operators" is possibly to avoid putting it= =20 >alone in a category of its own. > =20 > well, then the question is, is this a documentation issue or an=20 implementation issue? I guess we need to check in the source code what the operator '!" does. in python, for example, "!/not' is a very strange beast too, because the=20 'and' and 'or' are not real operators, they are part of the grammar. If you write: s =3D p and q; =20 that behaves like the shell 'and' operator, ie if 'p' is false then 'q'=20 is never evaluated, and there is such thing as a call to p.__logical_and__(q), the operator is resolved=20 at the "parsing" stage. but for bit operators s =3D p & q; is resolved as =20 =20 s =3D p.__and__(q); since in python __and__ is the bit operator, not the logical operator. if that is the case in perl too, ie, that 'and/&&' and 'or/||' are part=20 of the grammar, then they can't be overloaded. >"and" "or" "not" are supposed (?) to just be aliases with a different >priority. Is "not" overloadable? does it just reuse the implementation o= f=20 >the "!" operator ? > > =20 > do you mean in C++ or perl?, in C++ they are simple aliases, ie, you=20 can't define both. (but you can declare both as long as the declarations are equivalent). > _ _ __ ___ _____ ________ _____________ _____________________ ... >| Mathieu Bouchard - t=E9l:+1.514.383.3801 - http://artengine.ca/matju >| Freelance Digital Arts Engineer, Montr=E9al QC Canada > > =20 > |