Fantastic DSLs and where to find them
Anyone else dislike the immutability fad?<p>Mutability has its place, and simply hiding it behind abstractions tacked on to the language (vars, refs, agents, and atoms in Clojure&#x27;s case) isn&#x27;t a productive way to deal with it. It has a lot of benefits, but the downsides are significant. Sometimes I just want to create a map and mutate its structure, and the language saying &quot;no&quot; is constraining me in an unpleasant way.<p>It&#x27;s the old debate of whether the programmer should be constrained by the language, or the language should serve the programmer. Maybe it&#x27;s a matter of opinion.<p>Also, typed function parameters are painful. Declaring a parameter as a `f: () -&gt; int` instead of `f` requires that you think about what the signature needs to be. What if you don&#x27;t know? What if you want to change it? The cost goes up significantly, and I&#x27;m not sure the purported ability to sidestep a few bugs is worth it. If safety is an issue, good test coverage can be a sufficient substitute for types.<p>(The article is excellent, by the way.)