lazy thoughts
Jason House
jason.james.house at gmail.com
Tue Jan 13 14:39:48 PST 2009
Andrei Alexandrescu Wrote:
> bearophile wrote:
> > Andrei Alexandrescu:
> >> I'll wait for bearophile to tell if he feels he hasn't gotten the
> >> credit he believes he deserves before I answer this particular
> >> point.
> >
> > I'm having a bad week for matters unrelated to D. You are doing lot
> > of work for D, so don't worry for me. I was just a bit sad seeing you
> > inventing some things I use often and I have shown here few times.
> >
> > Consider the idea of having both lazy/eager versions of your
> > functors.
> >
> > Consider the idea of having a functionality like the xchain functor
> > and Chainable class mixin of my libs (that is lazy chaining of
> > arbitrary iterables, eager and lazy) using ~.
> >
> > I have also created various other things that you may re-invent in
> > the following days and weeks, like the Xcast, a way to cast lazily
> > the items of an iterable, etc.
> >
> > One small but important thing I think has to be fixed in D2 is
> > related to associative arrays in D: iteration has to happen first of
> > all on keys. This gives big practical advantages. In my libs all
> > functions when confronted with AAs use their keys first.
> >
> > In my dlibs I have implemented several other things that I hope to
> > see in D2, like the record/Record that is a much better Tuple, a
> > better equality testing among arrays, testing and comparison among
> > associative arrays, etc. I have explained such things few times, but
> > I am willing to explain them again, if there's someone willing to
> > listen.
>
> I understand. It would be great to solve this to everybody's
> satisfaction, and I think it's entirely possible.
>
> First off, allow me a rather general comment stemming from experience.
> The problem with little ideas like that is exactly that they are little
> - they are often hard to give credit for, and they may occur
> independently to many people. Over time I've shared many such little
> ideas with the C++ community in various venues, and I've often found
> them used without credit. The true solution is simply to let that go and
> hunt for bigger ideas. Bigger ideas have more impact, have larger uses,
> and are less likely to occur to others independently.
>
> Second, you'd hopefully give me that I'd heard of the benefits of lazy
> evaluation before having joined this group. The reason today's
> std.algorithm forgoes lazy evaluation is that iterating lazy structures
> is either very cumbersome (proxies) or very inefficient (opApply).
> Cumbersome abstractions will hardly become popular, and I hold costly
> abstractions in utter contempt. They are a dime a dozen and putting them
> straight in the core language and/or standard library would surely
> hamstring everything using them in actuality or in spirit. (Alan Perlis:
> "Lisp programmers know the value of everything and the cost of nothing."
> Well that has changed in modern Lisp because the prevalence of macros
> has grown appropriately, but it's still funny.) That's why the real
> problems to solve were things like figuring out an efficient way to
> define higher-order functions (via alias usage versus slow delegate
> usage), a solid iteration abstraction, and rendering opApply obsolete.
> That was the hard problem, not implementing higher-order functions or
> lazy algorithms. Once the solution was in place, the door is open for
> all sorts of cool stuff, and here's where you can add beneficial influence.
>
> This brings me to a third issue. If you want to make dlibs popular,
> talking about it on the newsgroup is a very inefficient way. Many
> discussions come and go on the newsgroup. I seem to remember that for
> the longest time you only provided your library as a downloadable zip
> file (with html documentation *inside* the zip). I want you to sit for a
> minute and ponder about the obtuseness of such a setup. It's almost like
> you wanted to just make a token acknowledgment of your own work, while
> keeping it in fact thoroughly obscure. Then, after finally having put
> the library online (at my behest as far as I remember), its online
> documentation could stand significant improvement and examples. You
> could do so with a fraction of the effort you spend on this newsgroup
> e.g. explaining your putr function (which, as expected, came and went
> and is now largely forgotten). If I were you I'd probably add some nice
> examples to the documentation and put a link to it in my .sig. Then,
> whenever you want to make a point, you can simply refer people to links
> to your documentation and examples, instead of sitting down and writing
> rationale and examples every time the discussion comes close.
>
>
> Andrei
Point #3 is on the mark. A URL to quality documentstion is worth 100 posts declaring the superiority of dlibs.
More information about the Digitalmars-d
mailing list