malkomalko
4/19/2011 - 9:40 PM

gistfile1.clj

(loop [coll (seq coll) foos [] last-bar nil]
  (if coll 
    (let [x (first coll)
          n (next coll)]
      (cond
        (foo? x) (recur n (conj foos (assoc-event x last-bar)) last-bar)
        (bar? x) (recur n foos x)
        :else (recur n foos last-bar))))
    foos))