       Re: Conditional evaluations of functions

• To: mathgroup at smc.vnet.net
• Subject: [mg96549] Re: Conditional evaluations of functions
• From: Asim <maa48 at columbia.edu>
• Date: Mon, 16 Feb 2009 06:56:58 -0500 (EST)
• References: <gn5udh\$gsv\$1@smc.vnet.net> <gn8ja8\$7ng\$1@smc.vnet.net>

```On Feb 15, 3:21 am, Jean-Marc Gulliet <jeanmarc.gull... at gmail.com>
wrote:
> In article <gn5udh\$gs... at smc.vnet.net>, Asim <ma... at columbia.edu>
> wrote:
>
> > I am not sure why the function g does not work, but the function f
> > works as expected on Mathematica 7.0 on Windows XP.  I want to get th=
e
> > sum of a vector only if the argument supplied is a numeric vector.
>
> > In:= g[x_?VectorQ[ x, NumericQ]] := Total[x]
>
> > In:= g[{a, b , c}]
>
> > Out= g[{a, b, c}]
>
> > In:= g[{1, 2, 3}]
>
> > Out= g[{1, 2, 3}]
>
> [snip]
>
> The test function that follows the question mark operator '?' is
> expected to be a pure function. A *pattern*, like the one used for the
> function f after the condition operator '/;' (which expect a pattern) is
> *not* a pure function.  Try
>
>   In:=
>
>     g[(x_)?(VectorQ[#1, NumericQ] & )] := Total[x]
>     g[{a, b, c}]
>     g[{1, 2, 3}]
>
>   Out= g[{a, b, c}]
>
>   Out= 6
>
> Regards,
> --Jean-Marc

Thanks to all for your answers. Things were not clear from the
document that one needs a Pure Function.

Asim

```

• Prev by Date: Re: Length of a held expression
• Next by Date: Re: Typesetting bug
• Previous by thread: Re: Conditional evaluations of functions
• Next by thread: newbie here,, need help with parametrics