|
[Date Index]
[Thread Index]
[Author Index]
Combining several pure functions into a single pure function
- To: mathgroup at smc.vnet.net
- Subject: [mg7262] Combining several pure functions into a single pure function
- From: r.lawrence at worldnet.att.net (Robert Lawrence)
- Date: Tue, 20 May 1997 02:59:04 -0400 (EDT)
- Organization: AT&T WorldNet Services
- 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)]
The only generally-applicable method that I have found to do this is
to arrange things so that each individual pure function, when
generated, is placed inside a wrapper -- so that the group would
initially look like this:
temp=
(wrap[Function[x,Plus[x]>9]] && wrap[Function[x,Length[x]==4]]) ||
(wrap[Function[x,Plus[x]<3]] && wrap[Function[x,Length[x]==6]])
I then produce the function I need by writing:
Function[x,(temp /. wrap[expr_] -> expr[x])]
This approach works fine but seems slightly convoluted. I'm wondering
if anyone knows of a more straightforward way of accomplishing this.
Bob Lawrence
Prev by Date:
Re: Bugs in Mathematica ver: 3.0 ?
Next by Date:
Re: Contexts
Previous by thread:
How to write efficiently a large matrix of real numbers to an ASCII file
Next by thread:
Re: Combining several pure functions into a single pure function
|