MathGroup Archive 2006

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

Search the Archive

Re: Lisp-like let in Mathematica?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg63461] Re: Lisp-like let in Mathematica?
  • From: "Richard Fateman" <fateman at cs.berkeley.edu>
  • Date: Sun, 1 Jan 2006 01:16:15 -0500 (EST)
  • References: <dp5rpt$rpm$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

You might read about Block or Module.
Or perhaps if you prefer let*  in common lisp..

BlockX[{}, E_] := E
BlockX[{a_, b___}, E_] := Block[{a}, BlockX[{b}, E]]
Attributes[BlockX] = {HoldAll}


As for whether your program is "good" Mathematica style, 
it seems to me that it is a matter of taste.  Some people would
say yes. 
I agree with you that it looks backwards, and by using
so many operators it raises questions about precedence between
them. Does Mathematica do the right thing?
RJF


----- Original Message ----- 
From: <theran at gmail.com>
To: mathgroup at smc.vnet.net
Subject: [mg63461] Lisp-like let in Mathematica?


> Are functions like
> 
>  RealizeGraphicMatroid[G_] :=
>    IncidenceMatrix[#] - IncidenceMatrix[ReverseEdges[#]] & @
> OrientGraph[G] // Transpose
> 
> considered to be good Mathematica style?  This does what I want, but it
> has the problem of being written in a right-to-left-to-right style.  Is
> there an operator that works like let in Lisp that can give a local
> name to a temporary value in an easier to read way?  I guess something
> like
> 
>  Let[a_ , b_, body_] :=
>    (body /. a -> #) & @ b
> 
> would work, but I'm relatively new to Mathematica and was wondering if
> there is a built-in or less clunky solution.
> 
> ^L
>


  • Prev by Date: Re: How to output float in Fortran form from Mathematica high precision number
  • Next by Date: Re: Lisp-like let in Mathematica?
  • Previous by thread: Re: Lisp-like let in Mathematica?
  • Next by thread: Re: Lisp-like let in Mathematica?