[心得] clojure

作者: dryman (dryman)   2012-05-21 09:38:19
上次fp聚會我會後有寫一點點clojure的demo
其中一個是算DFA,當時說要上傳不過忘記了orz
程式如下:
(def dfa
{:start :a,
:delta
{:a {0 :b, 1 :c}
:b {0 :a, 1 :b}
:c {0 :a, 1 :c}}
:accept #{:c :b}})
(defn process-dfa [dfa lst]
(loop [state (dfa :start), lst lst]
(if (seq lst)
(recur (((dfa :delta) state) (first lst))
(next lst))
((dfa :accept) state))))
(process-dfa dfa [0 1 0 0 1])
===> :b ; accepted
(process-dfa dfa [0 1 0 0 1 0])
===> nil ; rejected
作者: godfat (godfat 真常)   2012-05-22 02:15:00
感謝!

Links booklink

Contact Us: admin [ a t ] ucptt.com