I was recently thinking about something in Rich’s latest talk. He said: you should not be working under the logic system, the logic system should be serving you. I think he was talking about complicated static typing systems. But isn’t it kind of arbitrary what you substitute for x in “working under x”? In Clojure we choose to work “under immutability”, it’s not something we choose only when it’s convenient? Yes, you have shortcuts like transients, but ST langs have shortcuts too like type casts.
Most of the time immutability is what I personally want though. But for other people static typing is what they want most of the time. I guess it’s all just “situated” and opinionated 😉.
I think you would have the same issue if Clojure mandated immutability. Look at the whole IO monad thing, IMO that’s the result of being constrained by a impossible ideal.