Hi Pablo,
I think you're right. Have a look at flatten source

(defn flatten
  "Takes any nested combination of sequential things (lists, vectors,
  etc.) and returns their contents as a single, flat sequence.
  (flatten nil) returns an empty sequence."
  {:added "1.2"
   :static true}
  [x]
  (filter (complement sequential?)
          (rest (tree-seq sequential? seq x))))

it is the rest function that causes this behavior and it seems to be just 
an optimization to avoid filtering the first element of tree-seq that is 
known to be the whole sequence. A simpler definition of flatten seems to 
have the behavior you expected.

(defn flatten1 [x] (filter (complement sequential?) (tree-seq sequential? 
seq x)))




Il giorno mercoledì 1 luglio 2015 13:55:28 UTC+2, J. Pablo Fernández ha 
scritto:
>
> Hello Clojurists,
>
> Today I was surprised by the result of (flatten 1) which is '(). I was 
> expecting '(1) or an error. Talking in some other people in #clojure @ 
> clojurians.net, not everybody agrees that '(1) is a good result but that 
> '() is somewhat surprising. Would it be better if it raised an error when 
> the attribute is not sequential?
>

-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to