You might want to take a look at https://github.com/mromyers/automata specifically, https://github.com/mromyers/automata/blob/master/examples.rkt and https://github.com/mromyers/automata/blob/master/machines.rkt
I more or less just use the definition that was in my textbook: you provide a transition function, and the DFA or NFA just uses stream-fold to get the extended transition. I used a bunch of generics stuff to try to generalize everything past the point of practicality, but it's still reasonably fast. It's not documented, but use (in-machine? M seq) to check for acceptance, (extended-transition M start seq) for final state(s). There's also a minimization function and nfa->dfa conversion in there, but they're a bit fragile, so use at your own risk. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.