Too complicated code for generating a random string?
monarch_dodra
monarchdodra at gmail.com
Sat Feb 23 08:52:28 PST 2013
On Saturday, 23 February 2013 at 16:29:49 UTC, Andrei
Alexandrescu wrote:
> On 2/23/13 5:56 PM, monarch_dodra wrote:
>> On Saturday, 23 February 2013 at 14:28:28 UTC, Jens Mueller
>> wrote:
>>> Can we have a generic function/code that is as efficient as
>>> yours?
>>
>> Well, for now, we have "map" (and "iota"). This usually covers
>> enough
>> ground, but there remains cases where it is sub-optimal.
>>
>> What we would need is a "generate". Basically, a range that
>> calls a
>> function to generate the value of front on the fly. I've seen
>> enough
>> threads like this one that "abuse" iota/repeat/take/map (or
>> sequence and
>> recurrence for that matter), just to obtain a generic
>> generator.
>>
>> Let's just write Generator/generator.
>
> Make sure you copy Sequence/sequence :o).
>
> Andrei
Have you actually tried it? Do you know what the signature of a
function passed to sequence is?
I think this bug entry sums it up pretty well, and why "Sequence"
is not really adapted:
http://forum.dlang.org/thread/bug-9550-3@http.d.puremagic.com%2Fissues%2F
//----
import std.stdio, std.range, std.conv, std.random, std.typecons;
void main()
{
dstring letters = "abcd";
dchar fun(Tuple!(), uint) {return letters[uniform(0, $)];}
writeln(sequence!fun().take(9));
}
//----
I failed to use a lambda or mixin in this case.
I really don't think we should push to try to warp the existing
stuff to work in any scenario, but rather, give the tools
required to work intuitively for any scenario.
More information about the Digitalmars-d
mailing list