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

Re: Multiple values in Dylan



> Date: Sun, 25 Oct 92 15:14:41 -0800
> From: meehan@src.dec.com

Scott Fahlman asked for examples, and you didn't really provide
any.  I think it's incumbent on anyone proposing significant language
changes to give examples of how common usages would change under
the proposal. Let me ask you how you propose the following expression
should be written:

  (* y (ceiling/ x y))

You touched on that in this paragraph:

> Of course, there's a cost to being hard-nosed.  If we follow my
> suggestion, you won't be able to write (bind ((q (floor a))) ...), or
> even (+ (floor a) b), since the wrong number of values are being
> "returned".  Of course, this one is easy to fix, by defining a
> function ("floor1") that returns only the first value, just as MODULO
> returns only the second value.

but I'm not sure that adding a bunch more functions to the language is
the direction we want to go.  Maybe you should propose the exact set of
functions to be added and then we can see whether it seems like too much
for a language that is trying to be small in both implementation and
cost of learning.

I'd also like to know whether you propose to keep the function values
a function or change it to a special form.  That has an important effect
on your proposal, too, doesn't it?

I don't think we are necessarily inflexible about keeping Dylan multiple 
values the way they are, but on the other hand we don't want to keep 
redesigning this language forever, so to be effective a proposed change has to 
be argued in a really convincing way.  I don't think you've done that yet for 
this change.  However, I don't want to prejudge this issue; this part of the 
current language definition is certainly ugly and if you can make a convincing 
case for something better, that would be great.

--Dave

PS: I'd like to see more proposals to remove things from the language rather 
than adding things.