It's in c.c.seq-utils You can look up stuff here:
http://richhickey.github.com/clojure-contrib/api-index.html On Sep 2, 4:12 pm, tmountain <tinymount...@gmail.com> wrote: > I believe the flatten in contrib is defined as follows. I can't > remember which module I found it in. > > (defn flatten > "Takes any nested combination of sequential things (lists, vectors, > etc.) and returns their contents as a single, flat sequence. > (flatten nil) returns nil." > [x] > (filter (complement sequential?) > (rest (tree-seq sequential? seq x)))) > > -Travis > > On Sep 2, 3:33 pm, Krukow <karl.kru...@gmail.com> wrote: > > > Hello, > > At some point I needed at "flatten" function taking a list of atomic > > elements or nested lists, and producting a "flat" list of only atomic > > elements (in the same order). It should be lazy. > > > This is what I came up with. Can anyone see a more elegant solution (I > > feel I am working "low-level" somehow). > > > user> (defn flatten [lst] > > (lazy-seq > > (if (empty? lst) lst > > (let [[x & xs] lst] > > (if (list? x) > > (concat (flatten x) (flatten xs)) > > (cons x (flatten xs))))))) > > #'user/flatten > > user> (flatten '(1 2 3 4)) > > (1 2 3 4) > > user> (flatten '((1 2) (3) 4)) > > (1 2 3 4) > > user> (flatten '(((1) 2) (3) 4)) > > (1 2 3 4) > > user> > > > /Karl --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---