Am Fri, 27 Dec 2013 14:26:59 +0000 schrieb "Ivan Kazmenko" <ga...@mail.ru>:
> Quick question. > > (1) I can do > n.iota.map!(_ => readln) > to get the next n lines from stdin. > > (2) However, when I do > readln.repeat(n) > it looks clearer but works differently: preserves front and reads > only one line. > > (3) In the particular case of readln, we can substitute it with > stdin.byLine.take(n) > but the question remains for other impure functions. > > So, what I ask for is some non-caching repeat for functions with > side effects. More idiomatic than (1). Is there something like > that in Phobos? Is it an OK style to have an impure function in > an UFCS chain? > > If repeat could know whether its first argument is pure, it could > then enable or disable front caching depending on purity... no > way currently? repeat() is only meant to repeat the same first element over and over. I think it would be wrong if it changed its value during iteration. A wrapper struct could be more ideomatic: FuncRange!readln.take(n) > Ivan Kazmenko. -- Marco