Finite state machine: Difference between revisions

add PicoLisp
(Rename Perl 6 -> Raku, alphabetize, minor clean-up)
(add PicoLisp)
Line 1,145:
Machine is READY. (D)eposit or (Q)uit :Q
Thank you, shutting down now.
</pre>
 
=={{header|PicoLisp}}==
Non-interactive random switch between states.
<lang PicoLisp>(seed (in "/dev/urandom" (rd 8)))
 
(de atm NIL
(state '(ready)
(ready (if (rand T) 'waiting 'quit)
(prin "ready->") )
(waiting (if (rand T) 'dispense 'refund)
(prin "wait->") )
(dispense 'ready
(prin "dispense->") )
(refund 'ready
(prin "refund->") )
(quit 'ready
(nil (prinl "quit")) ) ) )
(do 3
(while (atm)) )</lang>
{{out}}
<pre>
ready->wait->dispense->ready->wait->dispense->ready->quit
ready->wait->refund->ready->quit
ready->wait->dispense->ready->quit
</pre>
 
298

edits