public
Created

  • Download Gist
gistfile1.clj
Clojure
1 2 3 4 5 6 7 8 9 10 11 12 13 14
(fn [{:keys [states start accepts transitions]}]
((fn words [queue]
(lazy-seq
(when (seq queue)
(let [[state path] (peek queue)
more-results (words (into (pop queue)
(for [[letter state] (transitions state)]
[state (conj path letter)])))]
(if (accepts state)
(cons (apply str path)
more-results)
more-results)))))
(conj clojure.lang.PersistentQueue/EMPTY
[start []])))

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.