github "viablelab/SimpleStateMachine"
import SimpleStateMachine
enumState{case green
case yellow
case red
}enumAction{case TIMER
}vartrafficLights=StateMachine<State,Action>(
initial:.green,
stateChart:[.green:[.TIMER:.yellow
],.yellow:[.TIMER:.red
],.red:[.TIMER:.green
]])
trafficLights.onTransition({(_ newState:State, _ oldState:State)inprint("Light changed from `\(oldState)` to `\(newState)`")})Timer.scheduledTimer(withTimeInterval:3.0, repeats:true, block:{ timer in
trafficLights.send(.TIMER)})