June 25, 2017 [Issue 9550] Repeat!fun(size_t n) | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=9550 Vladimir Panteleev <dlang-bugzilla@thecybershadow.net> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |dlang-bugzilla@thecybershad | |ow.net Resolution|--- |WONTFIX --- Comment #4 from Vladimir Panteleev <dlang-bugzilla@thecybershadow.net> --- (In reply to daniel from comment #0) > The use case is where you want to repeat an (impure) function n times lazily. This doesn't make sense to me. Laziness and impurity do not mix. > iota(100).map!(x => uniform(0, 76)); This code is conceptually wrong. By itself, this code does nothing. Advancing the range will do nothing. Advancing the range while evaluating .front will do something; but so will accessing .front in a loop without advancing the range. The resulting range object is broken by design in several aspects. It seems to me that you are trying to shoehorn an operation into a design which was not really meant for it. In the case of random numbers, the proper solution would be a PRNG range, which has correctly-implemented .front (which always returns the same value while not advancing), .popFront (which advances the PRNG), and .save (which makes a copy of the PRNG's state). I'll close this as the last activity on this bug was over 4 years ago. If you think you have a valid use case, feel free to reopen, though I would suggest creating a forum thread about this first instead. -- |
Copyright © 1999-2021 by the D Language Foundation