It would be odd to call ANY of these sequences "wrong" in Raku. Raku specifically has built in capability of working with infinite sequences. Just because a sequence is infinite, doesn't mean you can't define it, work with it or use values from it. Sure, if you try to reify the whole thing you may be waiting a while, but there is nothing preventing you from using a portion of it.
Raku sequence definitions specifically allow "ending points" that may never occur in the sequence. Since that is the case, you don't even really need to specify a stop value. You can just say stop at "whatever". Whatever is spelled "*" in Raku.
There is additional syntax you can add to stop at the nearest value, last value previous or first value successor to the "stop value" (Note I didn't say less than or greater than the stop value since the sequence can be ascending, descending or non-monotonic).
Also note: The iterator function for the sequence is literally a function. It is any expression that produces a value. These sequences all use simple arithmatic increments but that is not a limitation of the sequence operator.
# Given sequence definitions# start stop inc. Commentfor -2, 2, 1, # Normal -2, 2, 0, # Zero increment -2, 2, -1, # Increments away from stop value -2, 2, 10, # First increment is beyond stop value 2, -2, 1, # Start more than stop: positive increment 2, 2, 1, # Start equal stop: positive increment 2, 2, -1, # Start equal stop: negative increment 2, 2, 0, # Start equal stop: zero increment 0, 0, 0, # Start equal stop equal zero: zero increment# Additional "problematic" sequences 1, Inf, 3, # Endpoint literally at infinity 0, π, τ/8, # Floating point numbers 1.4, *, -7.1 # Whatever-> $start, $stop, $inc {my $seq = flat ($start, *+$inc … $stop);printf"Start: %3s, Stop: %3s, Increment: %3s | ", $start, $stop.Str, $inc;# only show up to the first 15 elements of possibly infinite sequences put $seq[^15].grep: +*.defined}# For that matter the start and end values don't need to be numeric either. Both# or either can be a function, list, or other object. Really anything that a# "successor" function can be defined for and produces a value.say"\nDemonstration of some other specialized sequence operator functionality:";# Start with a list, iterate by multiplying the previous 3 terms together# and end with a term defined by a function.put 1, -.5, 2.sqrt, * × * × * … *.abs < 1e-2;# Start with an array, iterate by rotating, end when 0 is in the last place.say [0,1,2,3,4,5], *.rotate(-1).Array … !*.tail;# Iterate strings backwards.put 'xp' … 'xf';