12 lines
300 B
Plaintext
12 lines
300 B
Plaintext
(define-module automata
|
|
:imports ("sets.slime")
|
|
:exports (make-dfa)
|
|
|
|
(define (make-dfa Q S delta q0 F)
|
|
(let ((q q0))
|
|
(set-type! (lambda (s)
|
|
(set! q (delta q s))
|
|
(list (if (set::contains? F q) :accept :fail) q))
|
|
:automaton)))
|
|
)
|