[Date Index]
[Thread Index]
[Author Index]
Re: What is a good way of returning a function from a Module[]?
*To*: mathgroup at smc.vnet.net
*Subject*: [mg83378] Re: What is a good way of returning a function from a Module[]?
*From*: Peter Pein <petsie at dordos.net>
*Date*: Sun, 18 Nov 2007 04:59:01 -0500 (EST)
*References*: <fhmesn$8pg$1@smc.vnet.net>
Szabolcs Horvát schrieb:
> What is an elegant way of returning a function from a Module[]?
>
> Module[{a, b}, a = 1; b = a+1; (a+b+#)&] does not work because
> Function[] holds its arguments.
>
> The best way I could find was
>
> Module[{p, q}, p = 1; q = p+1; With[{a = p, b = q}, (a+b+#)&]]
>
> Is there a nicer/more concise way of doing this? This is a simplified
> example, but the important points are:
>
> 1. The returned function may depend on more than one parameter ('a' and
> 'b'; let's forget that in this case their sum could have been computed
> inside the Module[]).
>
> 2. 'a' and 'b' are not calculated independently. The value of 'a' is
> needed to find 'b'
>
> Szabolcs
>
In Version 5.2:
map Evaluate onto the function:
Module[{a, b}, a = 1; b = a + 1;
Evaluate /@ (a + b + #1 & )]
3 + #1 &
This works even for functions with arguments which got names already
used in the module:
Module[{a, b, x = Pi, y = E},
a = 1; b = a + 1; Evaluate /@
Function[{x, y}, (a + b + x)/
(y - b + a)]]
Function[{x$, y$}, (3 + x$)/(-1 + y$)]
Peter
Prev by Date:
**Plot to Plot3D problem**
Next by Date:
**Symbolic vector handling**
Previous by thread:
**What is a good way of returning a function from a Module[]?**
Next by thread:
**Re: What is a good way of returning a function from a Module[]?**
| |