anchor.diff:          //This is not something you call yourself
           //In this case, we construct the machine ourselves so don't need this
           member this.Create c s =
  -            Done
  +            printfn "Counter %i" state
  +            Ok
   
           //When a machine is ready to run
           //This corresponds to a socket ready call
  
positive.code:         member this.Timeout c s =
              Done
  
  [<EntryPoint>]
  let main argv = 
      //Build some machines and iterate over them
      //TODO: Try build a machine with an object expression
      let machines = [ Counter(3) :> IMachine<unit, unit>; Nothing() :> IMachine<unit, unit> ]
      machines 
      |> List.iter(
          fun m -> 
              match (m.Timeout () ()) with
              | Error e -> printfn "Error: %s" e
              | Done -> printfn "Done"
              | _ -> ()
         )
  
  
negative.code: 
          //When a machine receives a wakeup
          member this.Wakeup c s =
              match state with
              | x when x < 0 -> Error "state was less than 0" //We expect the counter to be greater than 0
              | 0 -> Done //If the counter is less than 0, we close this machine
  