Core concept

class State[S]
class Open; class Closed
val fresh: State[Open] = new State
Advertisement

How it works

Type erasure means phantom disappears runtime.

Advertisement

Trade-offs + gotchas

State machines with compile-time enforcement.