Re: Reevaluation of conditional arguments when the condition has changed

• To: mathgroup at smc.vnet.net
• Subject: [mg61056] Re: Reevaluation of conditional arguments when the condition has changed
• From: "Jens-Peer Kuska" <kuska at informatik.uni-leipzig.de>
• Date: Sun, 9 Oct 2005 01:35:05 -0400 (EDT)
• Organization: Uni Leipzig
• References: <di7r8p\$koj\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Hi,

expr1 /. DownValues[foo]

Regards

Jens

PS: This seems to be a bug, introduced by some
kind of optimization.

"David Park" <djmp at earthlink.net> schrieb im
Newsbeitrag news:di7r8p\$koj\$1 at smc.vnet.net...
| Dear MathGroup,
|
| Here is a programming problem that stumps me. We
|
| fooQ[_] := False
|
| Then write a definition that will factor out
multipliers of fooQ objects.
|
| foo[a_ b_?fooQ] := a foo[b]
|
| The following does not factor because b, or
anything else, fails the test.
|
| expr1 = foo[a b]
| giving: foo[a b]
|
| Now I define b as a fooQ object.
|
| fooQ[b] := True
|
| Now when I enter the same expression the a
factors out.
|
| foo[a b]
| giving: a foo[b]
|
| But if I reevaluate expr1 the definition is not
applied.
|
| expr1
| giving:  foo[a b]
|
| Why shouldn't I expect that to evaluate and now
factor? Is there a proper way to write the
definitions so it will evaluate?
|
| David Park