MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: can one make local symbol in a pure function?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg127380] Re: can one make local symbol in a pure function?
  • From: "djmpark" <djmpark at comcast.net>
  • Date: Fri, 20 Jul 2012 23:39:39 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net
  • References: <20420628.43496.1342771032206.JavaMail.root@m06>

Make the body of the Function a Module or With statement?


David Park
djmpark at comcast.net 
http://home.comcast.net/~djmpark/index.html 


From: Nasser M. Abbasi [mailto:nma at 12000.org] 



I was learning a bit about pure functions.
Suppose we have this toy example:

-----------------
Clear[f, x]
f[x_] := Module[{a = 2}, x^a]
lst = {1, 2, 3};
Map[f[#] &, lst]
-------------------

---> {1, 4, 9}

Now I'd like to define the pure function in-line, using the Function[]
syntax, but at the same time be able to make a local symbol 'a' like I did
when using Module. But the syntax does not allow one to do that. There is no
place to define it:

------------------
lst = {1, 2, 3};
Map[Function[{x}, x^2], lst]
----------------

---> {1, 4, 9}

So if someone wants to make a temporary symbol to use for temporary
calculation inside the pure function, like 'a' in this example, and at the
same time not have it be global symbol, then one must use a Module? I can
write

---------------------
lst = {1, 2, 3};
Map[Function[{x}, a=2; x^a], lst]
----------------------

But now 'a' is global, while when using Module it was local.

Any way to make local symbols in a pure function like with Module?

thanks,
--Nasser




  • Prev by Date: KeyEventTranslations.tr without root privileges
  • Next by Date: Re: Help with Reduce and ForAll
  • Previous by thread: Re: can one make local symbol in a pure function?
  • Next by thread: Re: can one make local symbol in a pure function?