       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