Should this work?

Regan Heath regan at netmail.co.nz
Thu Jan 9 09:15:41 PST 2014


On Thu, 09 Jan 2014 14:07:36 -0000, Manu <turkeyman at gmail.com> wrote:
> This works fine:
>   string x = find("Hello", 'H');
>
> This doesn't:
>   string y = find(retro("Hello"), 'H');
>   > Error: cannot implicitly convert expression (find(retro("Hello"),  
> 'H'))
> of type Result!() to string
>
> Is that wrong? That seems to be how the docs suggest it should be used.
>
> On a side note, am I the only one that finds std.algorithm/std.range/etc
> for string processing really obtuse?
> I can rarely understand the error messages, so say it's better than STL  
> is  optimistic.
> Using std.algorithm and std.range to do string manipulation feels really
> lame to me.
> I hate looking through the docs of 3-4 modules to understand the complete
> set of useful string operations (std.string, std.uni, std.algorithm,
> std.range... at least).
> I also find the names of the generic algorithms are often unrelated to  
> the name of the string operation.
> My feeling is, everyone is always on about how cool D is at string, but
> other than 'char[]', and the builtin slice operator, I feel really
> unproductive whenever I do any heavy string manipulation in D.
> I also hate that I need to import at least 4-5 modules to do anything
> useful with strings... I feel my program bloating and cringe with every
> gigantic import that sources exactly one symbol.

I feel exactly the same way.  I must admit I haven't done any serious D  
for a couple of years now, and the main reason is lack of free time, but  
the other is that each time I come back to try and do something I get  
weird arse error messages like the one you got above.

I realise that it is probably the way it is, to avoid bloating the  
language with several ways to do the same thing.  I agree with that  
position, however..  I don't think it's a bad thing (TM) to have a  
custom/specific set of operations for a given area which re-use more  
generic operations behind the scenes.

In other words, why can't we alias or wrap the generic routines in  
std.string such that the expected operations are easy to find and do  
exactly what you'd expect, for strings.

If someone is dealing with generic code where the ranges involved might be  
strings/arrays or might be something else of course they will call  
std.range functions, but if they are only dealing with strings there  
should be string specific functions for them to call - which may/may not  
use std.range or std.algorithm functions etc behind the scenes.

R

-- 
Using Opera's revolutionary email client: http://www.opera.com/mail/


More information about the Digitalmars-d mailing list