HI,
Am 10.11.2010 um 21:28 schrieb David Jacobs:
> That is, if I have (1 2 3 4 4 5 5 5 5 5 6 9 12 12), I want to get back
> the sequence (4 4 5 5 5 5 5 12 12).
Low-level solution using lazy-seq. As lazy as possible:
(defn ties
[coll]
(let [step (fn step [seen s]
(lazy-seq
(loop [s (seq s)]
(when-first [fst s]
(if (contains? seen fst)
(cons fst (step seen (rest s)))
(when-let [sn (next s)]
(let [snd (first sn)]
(if (= fst snd)
(cons fst (cons snd (step (conj seen fst)
(rest sn))))
(recur sn)))))))))]
(step #{} coll)))
Sincerely
Meikel
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en