Martin Odersky is planning to add polymorphic side effect types to Scala.
Lucas Rytz' PhD research describes an early incarnation. The syntax will be different: side effects will be modeled as implicit evidence. But the semantis will be largely the same I believe.
I seem to remember that the default will be that if no side effects are declared that any side effect is assumed. At least that was the idea in Rytz' PhD thesis. The reason for this was pragmatics: the only effect system in a main stream language is Javas checked exceptions. And for that the communis opinio ended up being that the idea is right but having to declare exceptions in intermediary layers of the call graph was not worth the effort.
That's why f.i. Anders Hjelberg left checked exceptions out off C#.
So getting the usability right is extremely important for a widely adopted effect system.
Btw there are a lot of publications around 2012 on the topic of effect systems.
This is fantastic work. It has a very approachable way of controlling side-effects. That's also one of Haskell's goals, but the learning curve is much steeper.
If I was going to teach Haskell to someone, I'd be very tempted to start them off by spending a few days noodling around with Koka.
I love that you can even annotate a function to let it read from a variable, but not write to it, or vice versa.
I'm definitely going to check this out - I think that having effects explicitly controlled in the code but strict by default is the sweet spot I'm looking for in my next language.
The syntactic sugar used here look absolutely beautiful. I really love this, it looks like a saner functional Ruby/JS baby.