Newsgroups: comp.lang.scheme
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!news2.near.net!news.mathworks.com!news.alpha.net!uwm.edu!math.ohio-state.edu!howland.reston.ans.net!ix.netcom.com!netcom.com!hbaker
From: hbaker@netcom.com (Henry G. Baker)
Subject: Re: call by value, again
Message-ID: <hbakerCzDEIL.2LM@netcom.com>
Organization: nil
References: <3a8ft3$smn@agate.berkeley.edu> <hbakerCz9z4D.4M4@netcom.com> <DMASON.94Nov15232839@jupiter.scs.ryerson.ca>
Date: Wed, 16 Nov 1994 17:13:33 GMT
Lines: 47

In article <DMASON.94Nov15232839@jupiter.scs.ryerson.ca> dmason@scs.ryerson.ca (Dave Mason) writes:
>In article <hbakerCz9z4D.4M4@netcom.com> hbaker@netcom.com (Henry G. Baker) writes:
>> One thing that I would add is that Algol-68, Bliss and ML do
>> essentially the right thing, because they make 'cells' (unfortunately
>> misnamed 'references' in Algol-68 and ML, I think) explicit.
>
>I think BCPL can also be added to this list.  The nice thing about ML
>and BCPL (and possibly Bliss) is that there is no such distinction
>between an L-value and an R-value.  Mutable values are a distinct type
>in ML, and in BCPL any reference to a variable name refers to the
>*location* of the variable.

Re BCPL: it didn't do it quite as elegantly as Bliss.  In Bliss, the
dereference operator was '.', as in '.foo' (if I recall correctly) to
obtain the value of the 'foo' variable.  BCPL _did_ do automatic
coercion in the context of a 'right hand side', which I do not think
is a good idea, because it hides the source of non-functionality from
the programmer.

In fact, I think that it was BCPL which popularized the notion of
'left hand value' versus 'right hand value' (which distinction isn't
necessary with explicit coercion, as you rightly point out).

(I wouldn't go so far as to recommend replacing Scheme with ML in
undergraduate courses on this basis.  Hopefully, CS students are
taught _both_, since both have valuable lessons to teach.)

(This business of trying to rationalize CS education by teaching only
one language is crazy.  It is like trying to teach mathematics by
focussing on only algebra.  What about geometry, analysis, logic,
etc.?  Also, by what hubris can we conclude that after only 50 years
of computing, we have found the perfect language?  I once taught a
graduate course in which we learned, and programmed in, a new language
every week.  It was a complete blast; everyone had a great time.  Some
of the languages were Turing Machines, Lisp, Teco(!), BCPL, Pascal,
microcode, etc.

On the other hand, I _do_ believe that if you're only learning one
language, that Lisp (with macros, EVAL, etc.) is the one to learn,
because the emulation of the essential features of most other
languages is pretty simple.  Exercises left to the reader.)

      Henry Baker
      Read ftp.netcom.com:/pub/hbaker/README for info on ftp-able papers.
      Contact hoodr@netcom.com if you have trouble ftping


