Skip to content

Instantly share code, notes, and snippets.

@amalloy
Created July 16, 2012 18:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amalloy/3124087 to your computer and use it in GitHub Desktop.
Save amalloy/3124087 to your computer and use it in GitHub Desktop.
(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 []]]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment