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
-~----------~----~----~----~------~----~------~--~---

Reply via email to