Core concept
class State[S]
class Open; class Closed
val fresh: State[Open] = new StateAdvertisement
How it works
Type erasure means phantom disappears runtime.
Advertisement
Trade-offs + gotchas
State machines with compile-time enforcement.