gary@left.soe.clarkson.edu (Gary Levin) (03/08/88)
References from previous articles are below my follow-up.
SETL has always permitted assignments to tuples (its name for lists),
and functions can return tuples. The assignment
[x,y] := [y,x];
provides swap, for instance.
SETL was developed at the Courant Institute. See Schwartz et al.
Programming with sets: An introduction to SETL. Springer-Verlag, 1986.
Those interested in trying SETL can write to me. I have developed an
interactive version of SETL, called ISETL. It is highly portable,
written in C, and available for MS-DOS (256K min), Mac, Vax (Unix and
VMS), Suns. Source is available for those wishing to compile for
other machines. If you get it electronically, there is no fee. $10
for printed documentation, $10 per media shipped.
===== Original ====
In article <700@l.cc.purdue.edu> cik@l.cc.purdue.edu (Herman Rubin) writes:
>In article <25284@cca.CCA.COM>, g-rh@cca.CCA.COM (Richard Harter) writes:
> ........
>> But how do I get stuff back. I can pass one thing back
>> via the return statement. To pass more than one thing I have to play
>> games. ...
>
>No, what is needed is to abandon the mistaken notion that a function
>returns a single result. From day one, lists should have been allowed
>to the left of the replacement sign--this is not just for functions,
>but even for direct operators. For example, ...
---
Gary Levin / Clarkson Univ / Potsdam, NY 13676 (315) 268-2384
gary@clutx.bitnet, gary@clutx.clarkson.edu
--
Gary Levin / Clarkson Univ / Potsdam, NY 13676 (315) 268-2384
gary@clutx.bitnet, gary@clutx.clarkson.edukers@otter.hple.hp.com (Christopher Dollin) (03/08/88)
And of course Pop11 (and it's predecessors Pop-2, Pop-10) have always had
multiple return values, by virtue of the open stack (like Forth, although that
gives almost, but not quite, entirely the wrong impression ....)
To swop x and y:
x, y -> x -> y (not as transparent as x, y -> y, x, alas)
You can also play nice games; for example if _f_ takes 1 arg and delivers 2
results, _g_ takes 2 args and delivers 1 result, then
g(f(x)) does the "right" thing
(ie _g_ is applied to the two results coming back from _f_). Makes functional
composition dead easy to define!
Regards,
Kers | "Why Lisp if you can talk Poperly?"