std.stdio.writeln should not accept infinite ranges?

Xinok via Digitalmars-d digitalmars-d at puremagic.com
Thu Nov 12 19:21:27 PST 2015


On Friday, 13 November 2015 at 01:19:22 UTC, Andrei Alexandrescu 
wrote:
> On 11/12/2015 08:18 PM, Xinok wrote:
>> The following code compiles and runs:
>>
>> import std.stdio, std.random;
>>
>> void main()
>> {
>>      writeln(rndGen);
>> }
>>
>> Since rndGen is an infinite range, this code runs forever. It 
>> seems to
>> be that we need to add a check for isInfinite on writeln and 
>> other
>> related functions.
>>
>> Does anybody have a use case where this is actually practical? 
>> I don't
>> see a reason for allowing infinite ranges here, considering 
>> how easy it
>> is to write "range.take(n)".
>
> Piping a program that produces infinite output into less is 
> practical. -- Andrei

Fair enough. I'm thinking more on the side of safety though and I 
assume that, more often than not, printing an infinite range is 
unintentional. Should it be this easy to shoot ourselves in the 
foot? I'm not saying it should be impossible, but just make it 
explicit that we intended to print an infinite range.


More information about the Digitalmars-d mailing list