Finite state machine: Difference between revisions
add PicoLisp
Thundergnat (talk | contribs) (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>
|