3 ms·
I agree that using binding to avoid passing arguments is a bad design. That is not the only use of binding or more generally dynamic/special vars. Clojure has
by geckodru 10y ago
I agree that using binding to avoid passing arguments is a bad design. That is not the only use of binding or more generally dynamic/special vars.
Clojure has naive implementations of pmap, send, send-off & future. They're useful in the REPL, but you need to understand their shortcomings before using in would-be production code. Promise & delay have limitations, but are not so hamstrung as former functions.
Even if you don't expect any function to preserve meta, metadata is still useful. E.g., I've used it on a compiler to provide compiler tracing and decompilation.
Component is not essential. It helps if you're accustomed to OO languages. It's arguably better than the procedural style of with-redefs & bindings.
As amazing as core.async is, I am not a fan. I'd rather use queues, logs or an actor library.