While trying to finally get `take-while' etc, I realized that the problem with the `take' (and `drop' and related) argument order is even more thorny. The existing problem is that `take' in lazy takes the number first and then the list -- not a big problem by itself, but:
* Contradicts Haskell's argument order * Contradicts Clojure's argument order * *And* contradicts srfi-1's argument order for `take-while', which takes the predicate first So how about making it take its inputs in any order? (Possibly deprecating the number-last in the docs and eventually removing it.) No need to start a flamewar -- I know why it would be bad. But the above mess and potential confusion seems big enough to outweigh it. Specifically, it seems to me very odd now to go with the srfi-1 ordering for `take-while' and friends. (I'm also fine with swapping the arguments completely, but it seems that the breakage makes it a bad change.) To make things balanced -- * I see two arguments for keeping the order as it is now: (a) it makes it more like `list-ref' etc, where the number comes last (potential solution if the above is acceptable: make it do the same too, or just admit that indexing is different from these things); and (b) it accomodates better a potential future (list-slice l from too) which would look odd with the from-too arguments before the list. * OTOH, the advantages of the number-first order are being compatible with the rest of the world, and an order that is uniformly used in `take-while' etc. Opinions? -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life! _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev