Re: Combining several pure functions into a single pure function
- To: mathgroup at smc.vnet.net
- Subject: [mg7287] Re: [mg7262] Combining several pure functions into a single pure function
- From: penny at suu.edu (Des Penny)
- Date: Thu, 22 May 1997 09:19:38 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
>I am working with a little program that generates several pure
>functions which are "Boolean" in nature -- i.e., each of them, when
>applied to an argument, evaluates to True or False. These functions,
>when they are initially produced, are connected with logical operators
>-- for example:
>
> (Function[x,Plus[x]>9] && Function[x,Length[x]==4]) ||
> (Function[x,Plus[x]<3] && Function[x,Length[x]==6])
>
>In this form, however, they are useless since, as a group, they do not
>constitute a pure function and cannot be applied to an argument.
>Thus, I need to convert the foregoing into a single pure Boolean
>function, which would (using the above example) look like this:
>
> Function[x,(Plus[x]>9 && Length[x]==4) ||
> (Plus[x]<3 && Length[x]==6)]
Hi Robert:
Is this what you need?
=================================================
test=
(((Plus @@ # >9) && (Length[#]==4)) || ((Plus @@ # >3)&&(Length[#]==6)))&;
test[{1,-2,3,1,1,1}]
Out: True
=================================================
I was initially confused about x in your code. I finally decided that it
had to be a list. However Plus[{1,2}], returns {1,2}. I believe what you
need is the Apply function:
Apply[Plus,{1,2}]
Which returns 3.
This can also be written: Plus @@ {1,2}. This is the form I've used above.
Hope this helps.
Cheers,
Des Penny
-------------------------------
Des Penny
Physical Science Dept.
Southern Utah University
Cedar City, UT 84720
VOICE: (Office): (801) 586-7708
(Home) : (801) 586-2286
FAX: (801) 865-8051
e-mail: penny at suu.edu
-------------------------------