|# A turnstile, a state machine. #| |:state: locked :action: push| :state: locked |:state: locked :action: coin| :state: un-locked |:state: un-locked :action: push| :state: locked |:state: un-locked :action: coin| :state: un-locked |# I want/need multiple machines. #| ||:: create machine entrance :state: locked :: create machine exit :state: locked :: as entrance do :: (push coin push) :: end :: as exit do :: (coin push push coin) :: end |:: create machine $x :state: $state| :machines: $x $state |:: as $machine do| :: unpack machine $machine :: $machine is running |:: $machine is running :: end| :: repack machine $machine :: reset machines |:: $machine is running? :: $action| :action: $action |:: $action :machine: $machine?| :: unpack machine $machine :action: $action :: repack machine $machine :: reset machines |:: unpack machine $x :machines: $x $state| :state: $state |:: unpack machine $x? :machines: $y $state| :checked machines: $y $state |:: unpack machine $x| :not found: $x :: reset machines |:: repack machine $x :state: $state| :machines: $x $state |:: reset machines? :checked machines: $name $state| :machines: $name $state |:: reset machines|