Michele Simionato <[email protected]> writes:

> On Mon, May 25, 2009 at 3:34 PM, Alex Shinn <[email protected]> wrote:
>
>> Guile 1.8 is a pure interpreter, which means basically every
>> procedure application is a mini EVAL, which is why you see
>> that behavior.  For even more insane behavior on Guile's
>> part, try:
>>
>>  guile> (define foo lambda)
>>  guile> (define (bar x) ((x (y) (+ y 1)) 2))
>>  guile> (bar foo)
>>  3
>>
>> This won't "work" on any other Scheme implementation I'm
>> aware of.  The example you give in your slides won't work on
>> most implementations either, and it's misleading to suggest
>> it's the "old scheme behavior."
>
> Ok. Anybody here knowing Common Lisp can tell me how Common Lisp
> would work in that example?

Well, you couldn't do (defvar foo lambda) to begin with
since lambda isn't a variable.  But nothing like this is
remotely possible in any language that does any sort of
analysis, since bar is compiled before it is ever called.

Anyway, I had two points.  First, that phases aren't a new
idea any more than continuations were new when someone first
got the idea to make them first class.  Phases are
inevitability - they are what happens when you have macros.
Methods of managing phases sanely have existed for decades,
and while research on new methods continues, there's nothing
revolutionary about the R6RS approach.

The other point is, _please_, _please_ don't use Guile as an
example Scheme.  Now, I don't want to offend any Guilers,
and I know that maintainership has recently transferred and
a lot of good work is going into Guile 2.0.  I wish them the
best of luck.  But it's not out yet, and I have a theory
that Guile 1.x has done a surprising amount of damage to
Scheme's reputation.  When I first decided to take a look at
Scheme, the first thing I did was go to gnu.org to find the
GNU Scheme, and there was Guile - surely the gcc of Schemes.
Many people did the same.  And it turns out that Guile was a
particularly bad implementation.  Aiming to be an extension
language is no excuse for being a bad language overall, and
many other Schemes make better extension languages.  I
eventually found these other Schemes, but I wonder how many
people turned away from Scheme altogether after their
encounter with Guile?

-- 
Alex

Reply via email to