Problem: Evaluating a persistent collection for which the function first returns the symbol do leads to that collection being treated as the do special form, even though it may be a vector or even a set. IMHO, the expected result would be to report that do cannot be resolved.
Cause: The check for do is checking for IPersistentCollection instead of ISeq.
Solution: Change the cast (occurs in two places) for the do form check from IPersistentCollection to ISeq:
Screened by: Alex Miller