home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: sci.math.symbolic
- Path: sparky!uunet!snorkelwacker.mit.edu!ira.uka.de!chx400!bernina!neptune!santas
- From: santas@inf.ethz.ch (Philip Santas)
- Subject: Re: MAPLE resources reccomendation
- Message-ID: <1992Nov17.210733.22082@neptune.inf.ethz.ch>
- Sender: news@neptune.inf.ethz.ch (Mr News)
- Nntp-Posting-Host: spica.inf.ethz.ch
- Organization: Dept. Informatik, Swiss Federal Institute of Technology (ETH), Zurich, CH
- References: <Bxtxzy.CJD@news.cso.uiuc.edu> <BxuxC6.Dxz@news.cso.uiuc.edu>
- Date: Tue, 17 Nov 1992 21:07:33 GMT
- Lines: 79
-
-
- In article <BxuxC6.Dxz@news.cso.uiuc.edu> Richard J. Gaylord <gaylord@ux1.cso.uiuc.edu> writes:
- >
- >this comment indicates a basic lack of understanding of the mathematica
- >programming language. there are MAJOR differences in the languages of
- >mathematica and maple (and macsyma). mathematica not only has pattern
- >matching (which can be very important) but it has many more built-in
- >functions for functional style programming.
-
- I do not quite understand what does the _number_ of _built-in_ functions
- has to do with Functional Programming. FP is based on simple concepts, and
- basically on \lambda abstractions (functions and variables); for their
- implementation only _trivial_ built-in structures are needed.
-
- Since you relate Patterns and FP, well, Mathematica Patterns _contradict_
- Basic Concepts from \lambda Calculus, like a-Conversion:
-
- In[1]:= f[x_]:=Function[x,x]
-
- In[2]:= f[1][2]
- Function::flpar:
- Parameter specification 1 in Function[1, 1]
- should be a symbol or a list of symbols.
- Function::flpar:
- Parameter specification 1 in Function[1, 1]
-
- Out[2]= Function[2, 2][3]
-
- On the other hand in Scheme which is a functional language we get
- the _correct_ result:
-
- 1 ]=> (define (f x) (lambda (x) x))
- ;Value: f
-
- 1 ]=> ((f 1) 2)
- ;Value: 2
-
- The same happens in SML (another functional language)
-
- - fun f x = (fn (x) => x);
- val f = fn : 'a -> 'b -> 'b
-
- - f 1 2;
- val it = 2 : int
-
- Given the above, one observes that Maple behaves _correctly_ in this trivial
- FP case:
-
- f:=proc(x) (x->x) end:
-
- f(1)(2);
- 2
-
- CAS systems have been mainly built for solving algebra problems and not for doing
- acrobatisms with various programming styles. If you want to program in an
- FP fashion, then there are many _excellent_ and widely used languages out there,
- like Lisp, Scheme, and ML (which includes strong typing and automatic type
- inferencing, among others). Of course, introducing FP concepts in a CAS environment
- is something positive, but one has to design it properly and has to think about
- the _orthogonality_ of the concepts.
-
- Now, if you compare Mathematica, Maple and whatever, in terms of FP,
- then it is quite obvious which provides what.
-
- Philip Santas
-
- "In an evolving universe those who stand still are really moving backwards"
- --------------------------------------------------------------------------------
- email: santas@inf.ethz.ch Philip Santas
- Mail: Dept. Informatik Department of Computer Science
- ETH-Zentrum Swiss Federal Institute of Technology
- CH-8092 Zurich Zurich, Switzerland
- Switzerland
- Phone: +41-1-2547391
-
-
-
-
-
-