On 28.07.2010 3:06, Nick Sabalausky wrote:
"Nick Sabalausky"<[email protected]>  wrote in message
news:[email protected]...
Trying to convert some D1 code to D2:

On 2.047, I'm trying to do this:

import std.string;
void foo(string str)
{
str =
  std.algorithm.map!(
   (char a) { return inPattern(a, [digits, letters])? a : '_'; }
  )(str);
}

And I'm getting:

delegate std.algorithm.__dgliteral1 cannot access frame of function
__dgliteral1

What's going on? How do I do it right? I figure I probably have some sort
of problem with strings being immutable(char)[] instead of char[], but it
doesn't look like that's the issue it's complaining about. Also, in this
particular case, I'm not concerned about multi-unit UTF-8 characters.


In my particular case, I've just switched to regex:

import std.regex;
str = replace(str, regex("[^a-zA-Z0-9]"), "_");

But I am still curious to hear what exactly was going on with map.


AFAIK weird compiler bug. See also thread about std.find which involves the problem with map http://www.digitalmars.com/d/archives/digitalmars/D/Improving_std.algorithm.find_113545.html#N113558


--
Dmitry Olshansky

Reply via email to