# Re: 2nd level pure function

• To: mathgroup@smc.vnet.net
• Subject: [mg11086] Re: 2nd level pure function
• From: daiyanh@mindspring.com (Daitaro Hagihara)
• Date: Sun, 22 Feb 1998 14:55:12 -0500
• Organization: MindSpring Enterprises
• References: <6c3bsc\$18l@smc.vnet.net>

```In article <6c3bsc\$18l@smc.vnet.net>, richard nathan linger
<rlinger@students.uiuc.edu> wrote:

> I am having a problem with explicit functions.  I am trying to write a
> procedure that returns a function that returns a function.  I would
> like to have it return this as a pure function.  I am not sure how to
> do this.
>
> I will state this problem another way; I know that if f[a]=4+a, then as
> a pure function, f is analagous to Function[4 + Slot[1]].  I want to
> know how to represent f as a pure function when f[a][b]=a+b;
>
> Nathan Linger
> Sophomore
> University of Illinois

First I'd like to start out by saying that I don't know of any way to
produce nested pure functions using standard built-in commands.  Maybe
folks at WRI can give you some guides on this.

Second it may be a bad idea to make programs heavily dependent on pure
functions since dealing with them is a "pure" pain in the ass.  Having
just a few of them around makes me quite nervous as the ominous
anticipation of using Distributes's and Through's and Operate's becomes
increasingly clear.

Third by going through some of the things you posted, I found out a
certain degree of anomalies besides what you've found.  E.g., while
Block[{x=#},x]& works as expected, Block[{x=#},x+#&]& doesn't work.
This is puzzling since the defined function f[x_]=x+#& works.  But by
using Module instead of Block, everything worked except the
intermediate pure function looks funny.