Hacker News new | past | comments | ask | show | jobs | submit login

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.

The 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.

I 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.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact