[racket-dev] `take' argument order
10 minutes ago, Robby Findler wrote:
> On Wed, Jun 8, 2011 at 8:55 AM, Eli Barzilay <eli at barzilay.org> wrote:
> >
> > [Yes, that's true regardless. If `take' in plain `racket' stays
> > as is, then eventually the one in lazy will need to change. It
> > just happened to be the first thing that made me look at the order
> > more closely, and discover thet other issues. As another point,
> > the justification for the argument order in Haskell is not
> > laziness but its implicit currying -- so of course it shouldn't be
> > a reason to make lazy racket follow it.]
>
> So, part of the discussion is changing the argument order for strict
> Racket's take?
Yes. The problem is that `racket/list' followed srfi-1 which
contradicts Haskell, and Clojure (and very likely more), *and* it also
contradicts its own `take-while':
(take list n)
(take-while pred list)
> That seems difficult, for backward compatibility reasons.
My suggestion, to accommodate legacy code, is to allow *both* orders,
which is possible if improper lists are forbidden. (I said that I'm
fine with just changing it, but the compatibility issue is probably
making that impractical.)
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://barzilay.org/ Maze is Life!