21 :: State = S0 | S1 | S2
22 :: Input = Coin | Button
23 :: Output = Tea | Coffee | Coin`
25 coffee1 :: State Input -> [Trans Output State]
26 coffee1 S0 Coin = [Pt [Coin`] S0, Pt [] S1]
27 coffee1 S1 Coin = [Pt [] S2]
28 coffee1 S1 Button = [Pt [Tea] S0]
29 coffee1 S2 Button = [Pt [Coffee] S0]
30 coffee1 s input = [Pt [] s]
32 m1 :: Int Input -> ([Output], Int)
34 m1 1 Button = ([Tea], 0)
35 m1 2 Button = ([Coffee], 0)
38 Start world = testConfSM [] coffee1 S0 m1 0 (\_ . 0) world