MathGroup Archive 2013

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

Search the Archive

Re: Mathematica and Lisp

  • To: mathgroup at
  • Subject: [mg129486] Re: Mathematica and Lisp
  • From: Richard Fateman <fateman at>
  • Date: Wed, 16 Jan 2013 23:17:33 -0500 (EST)
  • Delivered-to:
  • Delivered-to:
  • Delivered-to:
  • Delivered-to:
  • References: <kcqkv4$lq5$> <kd5hto$jjk$>

On 1/15/2013 10:38 PM, John Doty wrote:
> On Friday, January 11, 2013 8:23:16 PM UTC-7, amzoti wrote:
>> It is clear the Mathematica uses Lisp as one of the example programming paradigms

  it pulls from and I have a general question regarding this.
> Perhaps not as much as you think. Mathematica is fundamentally a term rewriting system,

a more general concept than the lambda calculus behind Lisp.

If you want a term rewriting system, several of them (free, open source) 
have been written in Lisp.  Anything that Mathematica can
do computationally can be done, in principle, with any "Turing equivalent"
programming language, and that includes Lisp.

Lisp is not an implementation of the lambda calculus as some people
seem to think.  McCarthy used the word "lambda" the way Mathematica
uses the word "Function".
Other than that use to introduce formal parameters, nothing much was
taken from Church's writings, as McCarthy has explained in some
historical articles.

  To be sure, the easiest thing to express as term rewriting

is the replacement of a function invocation by its body

(as in the lambda calculus), but Mathematica can do more

complex things, some rather strange from the lambda calculus point of 
view. Consider
> f_[whoCalled]^:=f
> Sin[whoCalled]

Certainly such a feature could be implemented in a pattern-matching 
system written in Lisp.  Since most lisp implementations provide
many "introspective" features including examining the run-time call 
stack, I think it would be possible to extract "who called me" from
this information of the (complete) call stack.  Lisp systems also tend
to provide tools that answer questions like "where are all the calls to
the function f in the source code.

> which yields
> Sin
> Very alien to Lisp!

Not really.


  • Prev by Date: Re: Mathematica and Lisp
  • Next by Date: Re: RegularExpression::maxrec: Recursion limit exceeded; positive match
  • Previous by thread: Re: Mathematica and Lisp
  • Next by thread: Re: Mathematica and Lisp