3 ms·
Maintainability is immeasurably boosted by referential transparency; most of the time you can look at a single function in isolation and understand everything t
by technomancy 15y ago
Maintainability is immeasurably boosted by referential transparency; most of the time you can look at a single function in isolation and understand everything that's going on rather than having it be affected by other pieces of the codebase. I find it's much easier to work on a large codebase in Clojure vs Ruby just because it encourages a clean separation of concerns.
Of course in Clojure a 30k LOC project is considered very large. It's an open question whether this is due to Clojure's expressiveness vs the fact that it might not have been around long enough to spawn any massive projects.
Debuggability is helped a fair bit by having access to the repl in production contexts, but for the most part needing an actual stepping debugger is very rare, precisely because of referential transparency.
Bringing other folks up to speed is definitely the biggest problem. People who have experience with other FP languages usually don't know much about the JVM runtime and ecosystem, while people with Java backgrounds have a lot to learn about immutability and lisp.