From: rogoff@sccm.Stanford.EDU (Brian Rogoff)
Subject: Re: Q: access to subprogram
Date: 1996/07/24
Date: 1996-07-24T00:00:00+00:00 [thread overview]
Message-ID: <ROGOFF.96Jul24163007@sccm.Stanford.EDU> (raw)
In-Reply-To: ROGOFF.96Jul22154757@sccm.Stanford.EDU
bobduff@world.std.com (Robert A Duff) writes:
Brian Rogoff <rogoff@sccm.stanford.edu> wrote:
>.. I'm curious as to
>whether you find Pascal style iterators using downward funargs (there, I'm
>using Lisp terminology) superior to CLU/Sather-1.0 style iterators.
No. When I was a Pascal programmer many years ago, I used
procedures-as-params a lot for iterators. But CLU iterators are clearly
superior. I don't know Sather, but from what I've read, they seem even
more superior.
Yes, Sather iterators are a pleasure to use. There is a paper on the web page
about their design, and I imagine it has been published by now. On the other
hand, their integration into Ada would have been rather major, whereas the
Pascal approach would probably have been easier.
>...And
>how do the Ada 95 alternatives stack up?
Not very well, I'm afraid. You can use generics, but you end up with a
lot of verbose junk for some simple things. Sigh.
Ada generics are great, but it seems that they are (over)used to hide certain
ugly little corners of the language (like jgv's mutually recursive types
fix). I don't like using them for this.
>... Also, were these downward funargs
>widely used, or was there a small set of problems in which they were the ideal
>vehicle of expression, like the multidimensioal integration example?
I'd say Pascal's downward "funargs" were widely used for iterators. At
least in the code I saw, and the code I wrote.
Anecdotal evidence, but useful. So when the feature was there, people used it
a lot.
Ada's generics can do *almost* everything that Pascal can do. They
can't recurse, in Ada, like they can in Pascal. (I needed that once.)
And they're verbose, as I said.
Do you feel that they are the right solution though? The generic approach to
function composition looked ugly to me, whereas the direct approach looks
beautiful. That may be subjective, but I don't think so. I bet even most of
the people who argued against this feature in Ada would admit that for this
problem, generics are kind of ugly.
Smalltalk's version is pretty nice, by the way. You don't pass
procedures -- you pass blocks. And that avoids the annoyance of having
to name something that doesn't need or deserve a name -- it's just the
Body_Of_The_Loop, or whatever.
Just like Scheme, which had anonymous and named lambda expressions. I suppose
that in a future Ada, called Ada 0X rather than the plaintive sounding Ada 0Y,
we could have anonymous downward funargs, as Richard O'Keefe suggested for
Pascal.
- Bob
P.S. I was away for more than a week, so I may have missed some answers
to my question about full closures. Did anybody answer that?
Was this the "why are they any better than wrapping up the environment and
func in a tagged type" question?
-- Brian
next prev parent reply other threads:[~1996-07-24 0:00 UTC|newest]
Thread overview: 133+ messages / expand[flat|nested] mbox.gz Atom feed top
1996-07-02 0:00 Q: access to subprogram tmoran
1996-07-02 0:00 ` Robert A Duff
1996-07-02 0:00 ` Robert Dewar
1996-07-03 0:00 ` Jon S Anthony
1996-07-03 0:00 ` Mark A Biggar
1996-07-03 0:00 ` Robert A Duff
1996-07-03 0:00 ` Robert Dewar
1996-07-09 0:00 ` Thomas Wolff
1996-07-09 0:00 ` Robert Dewar
1996-07-10 0:00 ` Robert A Duff
1996-07-10 0:00 ` Richard A. O'Keefe
1996-07-10 0:00 ` Robert A Duff
1996-07-10 0:00 ` Thomas Wolff
1996-07-10 0:00 ` Robert A Duff
1996-07-10 0:00 ` Robert Dewar
1996-07-10 0:00 ` Robert Dewar
1996-07-03 0:00 ` Robert Dewar
1996-07-06 0:00 ` Robert A Duff
1996-07-08 0:00 ` Norman H. Cohen
1996-07-08 0:00 ` Robert Dewar
1996-07-11 0:00 ` Robert A Duff
1996-07-12 0:00 ` Robert A Duff
1996-07-14 0:00 ` Norman H. Cohen
1996-07-03 0:00 ` Robert Dewar
1996-07-03 0:00 ` Robert A Duff
1996-07-08 0:00 ` Norman H. Cohen
1996-07-09 0:00 ` Robert A Duff
1996-07-19 0:00 ` Brian Rogoff
1996-07-22 0:00 ` Richard A. O'Keefe
1996-07-23 0:00 ` Brian Rogoff
1996-07-23 0:00 ` Robert A Duff
1996-07-26 0:00 ` Brian Rogoff
1996-07-28 0:00 ` Robert A Duff
1996-07-22 0:00 ` Brian Rogoff
1996-07-23 0:00 ` Robert A Duff
1996-07-24 0:00 ` Richard A. O'Keefe
1996-07-26 0:00 ` Ken Garlington
1996-07-30 0:00 ` Richard A. O'Keefe
1996-07-24 0:00 ` Brian Rogoff [this message]
1996-07-26 0:00 ` Robert A Duff
1996-07-30 0:00 ` Brian Rogoff
1996-07-24 0:00 ` Brian Rogoff
1996-07-26 0:00 ` Richard A. O'Keefe
1996-07-28 0:00 ` Robert A Duff
1996-07-29 0:00 ` Richard A. O'Keefe
1996-07-29 0:00 ` Robert A Duff
1996-07-28 0:00 ` Fergus Henderson
1996-07-29 0:00 ` Richard A. O'Keefe
1996-07-30 0:00 ` Jon S Anthony
1996-07-03 0:00 ` Fergus Henderson
1996-07-03 0:00 ` Robert A Duff
1996-07-03 0:00 ` Adam Beneschan
1996-07-03 0:00 ` Robert A Duff
1996-07-03 0:00 ` Robert Dewar
1996-07-09 0:00 ` Thomas Wolff
1996-07-03 0:00 ` Robert Dewar
1996-07-05 0:00 ` Jon S Anthony
1996-07-06 0:00 ` Robert A Duff
1996-07-06 0:00 ` Robert Dewar
1996-07-08 0:00 ` Robert A Duff
1996-07-08 0:00 ` Richard A. O'Keefe
1996-07-08 0:00 ` Robert Dewar
1996-07-10 0:00 ` Richard A. O'Keefe
1996-07-10 0:00 ` Robert Dewar
1996-07-19 0:00 ` Richard A. O'Keefe
1996-07-08 0:00 ` Robert A Duff
1996-07-08 0:00 ` Robert Dewar
1996-07-06 0:00 ` Robert Dewar
1996-07-07 0:00 ` Ronald Cole
1996-07-07 0:00 ` Richard Kenner
1996-07-07 0:00 ` Robert Dewar
1996-07-07 0:00 ` Richard Kenner
1996-07-07 0:00 ` Robert Dewar
1996-07-14 0:00 ` Ronald Cole
1996-07-14 0:00 ` Richard Kenner
1996-07-15 0:00 ` Fergus Henderson
1996-07-15 0:00 ` Robert Dewar
1996-07-17 0:00 ` Fergus Henderson
1996-07-17 0:00 ` Richard Kenner
1996-07-17 0:00 ` Adam Beneschan
1996-07-20 0:00 ` Michael Feldman
1996-07-20 0:00 ` Robert Dewar
1996-07-16 0:00 ` Richard Kenner
1996-07-07 0:00 ` Mark Eichin
1996-07-08 0:00 ` Richard Kenner
1996-07-08 0:00 ` Brian Rogoff
1996-07-11 0:00 ` Norman H. Cohen
1996-07-11 0:00 ` Magnus Kempe
1996-07-11 0:00 ` Robert Dewar
1996-07-09 0:00 ` Jon S Anthony
1996-07-09 0:00 ` Robert Dewar
1996-07-09 0:00 ` Robert Dewar
1996-07-09 0:00 ` Jon S Anthony
1996-07-09 0:00 ` Robert Dewar
1996-07-10 0:00 ` Ronald Cole
1996-07-11 0:00 ` Robert Dewar
1996-07-11 0:00 ` Richard Kenner
1996-07-11 0:00 ` Jon S Anthony
1996-07-11 0:00 ` Robert Dewar
1996-07-11 0:00 ` Jon S Anthony
1996-07-11 0:00 ` Jon S Anthony
1996-07-11 0:00 ` Robert Dewar
1996-07-15 0:00 ` Mark A Biggar
1996-07-15 0:00 ` Robert Dewar
1996-07-11 0:00 ` Tucker Taft
1996-07-17 0:00 ` Brian Rogoff
1996-07-12 0:00 ` Jon S Anthony
1996-07-12 0:00 ` Robert Dewar
1996-07-15 0:00 ` Jon S Anthony
1996-07-15 0:00 ` Robert Dewar
1996-07-12 0:00 ` Brian Rogoff
1996-07-16 0:00 ` Magnus Kempe
1996-07-14 0:00 ` Ronald Cole
1996-07-14 0:00 ` Robert Dewar
1996-07-15 0:00 ` Jon S Anthony
1996-07-15 0:00 ` Robert Dewar
1996-07-16 0:00 ` Brian Rogoff
1996-07-24 0:00 ` Jon S Anthony
1996-07-25 0:00 ` Fergus Henderson
1996-07-25 0:00 ` David Kristola
1996-07-26 0:00 ` Robert A Duff
1996-07-30 0:00 ` David Kristola
1996-07-30 0:00 ` Thomas Wolff
1996-07-30 0:00 ` Robert A Duff
1996-07-26 0:00 ` Robert A Duff
1996-07-26 0:00 ` Fergus Henderson
1996-07-28 0:00 ` Robert A Duff
1996-07-28 0:00 ` Fergus Henderson
1996-07-25 0:00 ` Jon S Anthony
-- strict thread matches above, loose matches on Subject: below --
1996-07-05 0:00 tmoran
1996-07-06 0:00 ` Robert A Duff
1996-07-15 0:00 tmoran
1996-07-15 0:00 ` Robert Dewar
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox