MVarisn't quite right, because we're not waiting for someone to take a value out.
put, whereas your read side should
VerySimpleThingyis a simple state machine with Deferred like the ones I described in my talk
getcall arrives before the variable can be populated
sealed trait State[A] case class FirstCall(wait: Deferred[F, A]) extends State[A] case class NextCalls(v: A) extends State[A]
createmethod of the abstraction (I'll show you that in a bit), so that's why there is no
F[_]parameter, it's normally in the outer definition
Ref[F, State[A]]as your main component