PS throws an error here:

  (ps (try (a) (:catch nil (b))))

I think it should just gensym an identifier for the catch form. Sometimes you just want to know whether an error occurred, not what it was.

This came up because I implemented something like try/catch in CL, for the code that we compile to both CL and PS. If I stuff a variable in the catch form, the CL compiler warns about an unused variable. So I wrote a wrapper to do the above-mentioned gensym thing.

Daniel