[racket-dev] `take' argument order

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Wed Jun 8 09:52:42 EDT 2011

Just on general principle, I think that making take in lazy match take
in regular racket is more important than matching Haskell, but I don't
really have a firm enough grasp on the details to have a strong
opinion either way on the below.


On Wed, Jun 8, 2011 at 8:36 AM, Eli Barzilay <eli at barzilay.org> wrote:
> So ... no objections to this?
> Yesterday, Eli Barzilay wrote:
>> 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

Posted on the dev mailing list.