[racket-dev] `take' argument order

From: Eli Barzilay (eli at barzilay.org)
Date: Wed Jun 8 10:12:21 EDT 2011

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!



Posted on the dev mailing list.