Re: build-in commutativity

*To*: mathgroup at smc.vnet.net*Subject*: [mg36721] Re: build-in commutativity*From*: "Carl K. Woll" <carlw at u.washington.edu>*Date*: Fri, 20 Sep 2002 04:16:42 -0400 (EDT)*References*: <ambu72$qst$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Evgeni, Note that both "And" and "Or" can return a value without evaluating all of their arguments. For example, if the first argument to And is False, there is no reason to look at the other arguments. Suppose a user knows that one of the arguments is usually false, and so would like to look at that argument before any of the others, to avoid unneeded computations of the other arguments. He would put that argument first. If Mathematica turned around and sorted the arguments (which is what happens when a function is orderless), then that argument might end up being evaluated last. If the arguments take a significant amount of time to compute, then sorting first may cause the function to take much longer to evaluate. At any rate, if the above is not a concern for you, you may always change the attributes of And and Or to anything you want. Carl Woll Physics Dept U of Washington ----- Original Message ----- From: "Evgeni Trifonov" <algolog at yandex.ru> To: mathgroup at smc.vnet.net Subject: [mg36721] build-in commutativity > I'm curious, why the built-in boolean functions "And" and "Or" > aren't commutative? > > Attributes/@{Or,And}//ColumnForm > > {Flat, HoldAll, OneIdentity, Protected} > {Flat, HoldAll, OneIdentity, Protected} > > However, the arithmetical functions are "Orderless": > > Attributes/@{Plus,Times}//ColumnForm > > {Flat, Listable, NumericFunction, OneIdentity, Orderless, Protected} > {Flat, Listable, NumericFunction, OneIdentity, Orderless, Protected} > > ------------------- > Evgeni Trifonov > Vladivostok, Russia >