[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: What's so cool about Scheme?



On Fri, Jun 06, 2003 at 06:36:43AM -0400, Shriram Krishnamurthi wrote:
> Steve Dekorte wrote:
> 
> > I got this book based on a similar recommendation from a friend. IMO, 
> > it's a book about how to implement a Scheme in Scheme. About 20 of the 
> > 500+ pages are about OO and basically just show how to emulate them 
> > with case statements in Scheme. 
> 
> First of all, this isn't quite fair: the book describes various
> calling conventions, etc, that aren't Scheme's.  Also, 1/e describes
> control primitives that you could build with macros and continuations
> in Scheme, but that are implemented natively in the book.
> 
> Second, saying it's "about how to implement a Scheme in Scheme" is
> potentially misleading.  It does cover meta-circular interpreters, but
> it also does some amount of syntactic interpretation.  The latter
> makes the interpreter essentially language independent.
> 
> Finally, 1/e's handling of OO is weak, but 2/e gets religion.  (It
> elides some of that esoteric control and compilation material, though,
> to create a more concise but less enriching book.  Less fat, but also
> less moral fiber.)
> 
> Shameless Plug: If you're interested in notes that (a) don't rely on
> meta-circularity and (b) cover types with much more perspective, see
> 
>   http://www.cs.brown.edu/courses/cs173/2002/Lectures/

gathered from http://www.cs.brown.edu/courses/cs173/2002/Lectures/2002-09-06.pdf

"Idiom of a language are useful as a sociological exercise (...) but
it is to dangerous to glean too much from them. Idioms are
funcamentally human therefore bearing all the perils of faulty,
incomplete ans sometimes outlandish human understanding"

This is pure non sense. Programming is a human activity and it is very
important to capture common patterns in syntax.

  The perlish 

    $a{toto} 

  is very visually different from 

    a.GetFromDict{"toto"}

  and that matters to the practical programmer. 

That does not mean that a compiler, or a program prover must deal at
another level using a simpler abstract syntax, but that it is not the
level appropriate to a normal human.

Certainly, learning complex syntax takes time. And current environments
don't help much in that learning. But I will fault the lacking
environments not the syntactically rich languages per se.

--
  stef

> 
> To be revised again in 2003.
> 
> Shriram