Newsgroups: comp.lang.scheme
Path: utzoo!utgpu!news-server.csri.toronto.edu!torsqnt!snitor!doug
From: doug@snitor.uucp (Doug Moen)
Subject: Re: Logic does not Apply
Message-ID: <1991Apr30.151352.1460@snitor.uucp>
Organization: Siemens Nixdorf
References: <9104300906.aa04392@mc.lcs.mit.edu>
Date: Tue, 30 Apr 1991 15:13:52 GMT
Lines: 26

>That the logical operators are derived  expressions may well be the *legal*
>answer as to  why 'and' and 'or' cannot be  used with 'apply'---my question
>is though: is it a *reasonable* answer, with or without the RxRs Reports to
>hand?  Why shouldn't 'and' and 'or' be first class citizens of Scheme?
>
>It seems that logic does not apply! :-)
>
>Gordon Oulsnam                                 stcs8004@iruccvax.ucc.hea.ie

Good question.  If Scheme were changed to use normal order evaluation,
then `and' and `or' would indeed become first class procedures.  Also,
we could get rid of `delay' and `force', it would become easier to
define lazy lists, etc.  This increase in expressive power is not without
cost:  there is a performance penalty, and the new dialect `Lazy Scheme'
would not be backward compatible with many existing Scheme programs.
Also, the Algol-60 experience indicates that the interaction between
call by name and side effects makes imperative programs harder to understand
(think of Jensen's Device), and Scheme is, after all, an imperative language
with functional tendencies, rather than the other way around.
If we further change Scheme to make it both lazy *and* functional,
then I think we would end up with a worthy and interesting research project.
This new language would differ from the current crop of lazy functional
languages in some interesting ways: it would have latent types, rather
than strong typing, and it would would have Scheme syntax and macros.
-- 
Doug Moen | doug@snitor.uucp | uunet!snitor!doug | doug.tor@sni.de (Europe)
