Why Functional Programming Matters [pdf]
cs.kent.ac.uk
cs.kent.ac.uk
My problem with this side of the force, is that it's all about the theory and the expressivity, which matters of course, but very little about tooling, readability of the code, etc. This sometimes gives birth to functional languages that are very interesting but not really usable from an engineering perspective.
To me, it would be interesting to see a modern functional language that would follow Rust's way. Great all-in-one product (tooling, build system, package manager, formatter, static analyzer) with great doc, and language decisions that make organizing codebases a pleasure (via convention over configuration, for example)
I agree that functional programming makes software easy to write (it’s easy to reason about pure functions). However, having spent a decade writing and supporting Scala apps in the wild, I disagree with the notion that FP makes software easier to debug.
Perhaps this is a reflection on the way FP has been shoe-horned onto the JVM, but too many of my stack traces contain deeply nested calls to anonymous functions, and the semantics of the original program are almost completely buried in noise. This gets a lot worse when you start working with heavy framework code.
When writing code, I love Scala’s succinctness and expressiveness. When debugging, I miss the simplicity of stack-friendly imperative code.
I think the mapping of imperative "stack frames" to functional code is leaky when there's a runtime sitting in between. Traces should be done in the runtime, however it makes sense to display them.