Re: Reevaluation of conditional arguments when the condition has changed
- To: mathgroup at smc.vnet.net
- Subject: [mg61074] Re: [mg61046] Reevaluation of conditional arguments when the condition has changed
- From: Chris Chiasson <chris.chiasson at gmail.com>
- Date: Sun, 9 Oct 2005 01:35:48 -0400 (EDT)
- References: <200510080649.CAA20991@smc.vnet.net>
- Reply-to: Chris Chiasson <chris.chiasson at gmail.com>
- Sender: owner-wri-mathgroup at wolfram.com
Looking at your example, I noticed that typing foo[a b] directly gives the right result, but not evaluating expr1. So strange. On 10/8/05, David Park <djmp at earthlink.net> wrote: > Dear MathGroup, > > Here is a programming problem that stumps me. We start with a condition that is always False. > > 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 > djmp at earthlink.net > http://home.earthlink.net/~djmp/ > > > -- Chris Chiasson http://chrischiasson.com/contact/chris_chiasson
- References:
- Reevaluation of conditional arguments when the condition has changed
- From: "David Park" <djmp@earthlink.net>
- Reevaluation of conditional arguments when the condition has changed