Core concept
sealed trait Action[A]
case class Get(k: String) extends Action[Int]
// Free[Action, ?] program built + interpretedAdvertisement
How it works
Complex to implement. Tagless final often preferred.
Advertisement
Trade-offs + gotchas
DSLs, testing pure programs, effect isolation.