Hacker News new | ask | show | jobs
by jwatte 3397 days ago
Instead of using separate monad transformers, we use a single "World" that knows how to provide Redis, logging, iOS, and other typeclass instances.

There is a RealWorld that runs on top of IO and a FakeWorld that runs on top of pure State for unit testing.

This means that we have to wrap every single API into our own "SupportsRedis" and similar APIs, but in the end I think it's worth it! Unit tests are super fast and not intermittent at all.