Pm (>): > S03 has: > > For functions deduced when there is only one value on the left, > the final value is used to determine whether *.succ or *.pred is > more appropriate. The two values are compared with C<cmp> to > determine the direction of the progression. > > Rakudo evaluates C< "perl" cmp { ... } > as C<Order::Decrease>, > therefore it's using the .pred/decreasing progression.
Aye. That's clearly to spec. > So, one of the following: > a) &infix:<cmp> should produce a different result for Str vs Code > (if so, what?), &infix:<cmp> is consistent the way it is, but it's a consistency that surprises people. (Basically, comparing across incompatible is impossible.) Adding an exception for Str vs Code feels wrong, and is the opposite of what &infix:<cmp> would need to be saner. > b) &infix:<...> should assume .succ if the final value is a Code object, This alternative makes sense to me. It's similar to how &infix:<...> assumes .succ in this case: '"perl" ... *' > c) Rakudo is correct, or No. :) > d) Some other spec clarification or change needs to be made. I'm very satisfied with how the sequence spec has turned out. It's stable and in some kind of sweet spot. I don't imagine it needs an overhaul of any kind, actually. But the way this particular case worked surprised me as a user.