4 ms·
For me the largest difference is that Clojure carries over all your dynamic bindings when creating new threads (via 'future') and in lazy seqs, whereas Common L
by AlainPicard 9y ago
For me the largest difference is that Clojure carries
over all your dynamic bindings when creating new
threads (via 'future') and in lazy seqs, whereas
Common Lisp (typically) does not. I now understand
why they choose to do it this way, but I wish the documentation was much clearer in this regards.
- lisper 9y agoThe CL standard doesn't deal with threads at all, so different implementations do things differently. But typically the user can control what the initial bindings of a thread are through keyword arguments to whatever function spawns threads.
- kazinator 9y agoI made a dialect once called VoqLisp in which a thread carried the dynamic bindings visible in the code which spawned it. This then resembled POSIX environment variables: "FOO=bar command arg" and was handy in a similar way. You could use let to set up a bunch of parameters affecting the thread, and then create it in that body.