More on "Component Programming"

bearophile bearophileHUGS at lycos.com
Mon May 27 17:16:22 PDT 2013


Sebastian Graf:

> Plus, the compiler is still able to optimize most of the 
> delegate/range fluff away (as opposed to e.g. C#).

There are several optimizations that D/DMD is not performing on 
those ranges and higher order functions. The Haskell compiler GHC 
optimized that stuff using purity, library defined "rewrite 
rules", stream fusion/deforestation and more. DMD does nothing of 
this, or very little. I think so far Walter has shown no interest 
in this.


> I'm all for more algorithm primitives in std.algorithm. I 
> missed classify often enough and coming from a C# backgroung I 
> was confused that std.algorithm.group did not what I thought it 
> did.

> and coming from a C# backgroung I was confused that 
> std.algorithm.group did not what I thought it did.

The "group" of Phobos is useful and it has purposes quite 
different from the Perl6 "classify", both are needed.
I have also suggested "group" to act more like the Python 
"itertools.grouby" and yield not just the (head,count) tuples, 
but (head,lazy_range_of_the_equality_ class) that is quite 
useful, example:


>>> from itertools import groupby
>>> s = "abABACAaaaaBCAB"
>>> [(h, list(g)) for h,g in groupby(s, key=str.isupper)]
[(False, ['a', 'b']), (True, ['A', 'B', 'A', 'C', 'A']), (False, 
['a', 'a', 'a', 'a']), (True, ['B', 'C', 'A', 'B'])]

I think Andrei was looking at this change with interest. Changing 
Phobos group() API now is maybe not easy to do, so maybe it's 
better to introduce a differently named function for that, like 
one named "groupAll" or something similar.


> Is there any reason why you keep using quoted strings instead 
> of string literals for lambdas besides taste?

My editor uses a single uniform color for the contents of normal 
strings, unlike quoted strings.

Bye,
bearophile


More information about the Digitalmars-d mailing list