Makes sense.
--
Paul Hobbs

On Sat, May 29, 2010 at 11:51 PM, Eugen Dück <eu...@dueck.org> wrote:

> Paul,
>
> I already gave a minimal example of the code it makes simpler, i.e.
> work in the first place:
>
> (apply interleave some-colls)
>
> I ran into this a couple of times, and wrote my own variant of
> interleave that handles the one-coll case. I'd rather see this case
> handled by interleave.
>
> How often do you do:
>
> (+ 5)
>
> or
>
> (* 3)
>
> ? But you might have used something like
>
> (apply + coll)
>
> or
>
> (reduce + coll)
>
> and under certain circumstances your coll might have had only one
> element. Still + works just fine and returns a value that makes sense
> (it even does if you call it with no argument). I'm basically asking
> to get the same case that clojure handles for a lot of other functions
> added to "interleave".
>
> Eugen
>
> On May 29, 7:07 pm, Paul Hobbs <paul_ho...@hmc.edu> wrote:
> > What code would this make simpler?  Are you constantly having to check
> this
>
> > > (apply interleave some-colls)
>
> > special case?  If not, I don't see a reason to include it.
> > --
> > Paul Hobbs
> >
> > On Sat, May 29, 2010 at 1:32 AM, Eugen Dück <eu...@dueck.org> wrote:
> > > When I do
> >
> > > (apply interleave some-colls)
> >
> > > and some-colls is a sequence/collection of only one sequence/
> > > collection, it will throw:
> >
> > > user=> (apply interleave [[1 2]])
> > > java.lang.IllegalArgumentException: Wrong number of args passed to:
> > > core$interleave (NO_SOURCE_FILE:0)
> >
> > > (Of course I don't need the apply to cause that exception, but calling
> > > interleave directly with just one parameter doesn't make any sense.
> > > But in the case you use apply, having only one sequence in a sequence
> > > is a possible corner case that can arise "at run time")
> >
> > > In order to make interleave more general, I'd like to add a "one param
> > > overload" to interleave like
> >
> > > (defn interleave
> > >  "Returns a lazy seq of the first item in each coll, then the second
> > > etc."
> > >  ([c] (seq c))
> > >  ...
> >
> > > or even just
> >
> > > (defn interleave
> > >  ([c] c)
> >
> > > but that would break the contract of interleave, in that it returns
> > > whatever you pass in, which might not be a sequence, as is the case in
> > > my example.
> >
> > > Any thoughts on this?
> >
> > > Eugen
> >
> > > --
> > > You received this message because you are subscribed to the Google
> > > Groups "Clojure" group.
> > > To post to this group, send email to clojure@googlegroups.com
> > > Note that posts from new members are moderated - please be patient with
> > > your first post.
> > > To unsubscribe from this group, send email to
> > > clojure+unsubscr...@googlegroups.com<clojure%2bunsubscr...@googlegroups.com>
> <clojure%2bunsubscr...@googlegroups.com<clojure%252bunsubscr...@googlegroups.com>
> >
> > > For more options, visit this group at
> > >http://groups.google.com/group/clojure?hl=en
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com<clojure%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to