Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!rutgers!att!alberta!ubc-cs!grads.cs.ubc.ca!manis From: manis@grads.cs.ubc.ca (Vincent Manis) Newsgroups: comp.lang.scheme Subject: Re: "unspecified" and SET! Message-ID: <2281@ubc-cs.UUCP> Date: 20 Jun 89 01:48:58 GMT References: <3902@kalliope.rice.edu> <19890619192610.2.ALAN@PIGPEN.AI.MIT.EDU> Sender: news@cs.ubc.ca Reply-To: manis@grads.cs.ubc.ca (Vincent Manis) Organization: The Invisible City of Kitezh Lines: 40 I've bitten my tongue on this, but I really can't see the point of #!unspecified. Perhaps it would be nice in theory (especially if (define loop (lambda (x) (loop (1+ x)))) returned #!unspecified, which would then be equivalent to `bottom' in the Scott-Strachey world), but it seems pointless. One can argue, as somebody has, that the existing behaviour distinguishes between expressions and commands; however, Scheme already has a strong notion of side effects (unlike, say, Miranda), and whether a side-effecting procedure yields (), #f, an unspecified result, or #!unspecified really makes no difference to anybody, except in one place, which I'll mention in a moment. I regard `returns an unspecified result' as an injunction not to place a call to a procedure in a value-returning position, e.g., the last step in a lambda or begin. If I wrote a Scheme compiler, fascist that I am, I would probably generate an error message for such a usage. Going to the trouble to develop a calculus of unspecified values strikes me as almost as silly as some of the things I did when I was involved in writing an Algol 68 compiler. The one place where #!unspecified makes some sense is in Read-Eval-Print loops. One can use #!unspecified as a trigger that the result is not to be printed. But then one does not need to change the language: PC Scheme, for example, has *the-non-printing-object*. If it ain't broke, don't fix it. ____________ Vincent Manis | manis@cs.ubc.ca ___ \ _____ The Invisible City of Kitezh | manis@cs.ubc.cdn ____ \ ____ Department of Computer Science | manis%cs.ubc@relay.cs.net ___ /\ ___ University of British Columbia | uunet!ubc-cs!manis __ / \ __ Vancouver, BC, Canada V6T 1W5 | (604) 228-2394 _ / __ \ _ "Theoretical computer science helps me convince people that ____________ my indecisiveness is really Nondeterminism, which sounds like a much more positive characteristic." -- a student