> > > I would expect (flatten nil) => nil Why? => nil nil is not a sequence - your expectation is that Clojure flatten and return `nothing'... which *would* be a bug
Not a bug. Implementation deficiency/wrong expectations/ preconceptions/mis-application of earlier idiom to new platform. @ http://clojure.org/lisps As I understand it, the `problem' is the interop with Java, ISeq, & null s_P On Dec 15, 10:28 am, Randall R Schulz <rsch...@sonic.net> wrote: > On Monday 15 December 2008 07:22, Stuart Sierra wrote: > > > On Dec 15, 9:08 am, Randall R Schulz <rsch...@sonic.net> wrote: > > > > flatten returns a sequence - in this case a sequence containing > > > > 'nil. How else would you flatten on nil? > > > > I would expect (flatten nil) => nil > > > I agree, it's a bug, but I'm not sure how to fix it, unless it's just > > a special case that needs an "if". > > If my current experience is any indicator (I'll leave it to you to > evaluate the "if" part of that), there will be a proliferation of these > tests at the point of calling of flatten if it's not done that one time > within it. > > > Here's flatten, as written by > > Rich: > > > (defn flatten [x] > > (let [s? #(instance? clojure.lang.Sequential %)] > > (filter (complement s?) (tree-seq s? seq x)))) > > > Which I think can now be simplified to: > > > (defn flatten2 [x] (filter (complement coll?) (tree-seq coll? seq > > x))) > > > Should maps be flattened in addition to "sequential things"? > > My intuition is "no," but that's a pretty shallow intuition at this > point. > > > But still (flatten2 nil) => (nil) > > In general, you get weird results if the thing passed to flatten is > > not a vector or a list: > > > (flatten "hello") => ("hello" \h \e \l \l \o) > > (flatten2 "hello") => ("hello" \h \e \l \l \o) > > > -Stuart Sierra > > Randall Schulz --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---