public
Created

  • Download Gist
gistfile1.clj
Clojure
1 2 3 4 5 6 7 8 9 10
(fn [{:keys [states start accepts transitions]}]
((fn words [queue]
(lazy-seq
(when-let [[[state path] & queue] (seq queue)]
(let [more-work (for [[letter state] (transitions state)]
[state (conj path letter)])]
`(~@(when (accepts state)
[(apply str path)])
~@(words (doall (concat queue more-work))))))))
[[start []]]))

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.