Effects: to be or not to be?
Static typing is hardly controversial, but how far should we push the type system? What information should the types include, and what properties should they prove?
That’s where effect systems come in, but unlike the general approach, their answers to the questions above are hot debate topics!
Navigating the design space isn’t easy. Before we make up our minds, more questions need answering first: why do we need an effect system at all? How do effect systems differ? What are their tradeoffs? Let’s explore the options in Scala, the JVM, and beyond.