Absent any feedback on cmucl-imp, I would like to commit the following
patch. However, there is a regression in the test suite:
(assert (subtypep '(function) '(function (&optional * &rest t))))
I think the intent of this is that (FUNCTION (&OPTIONAL * &REST T)) is
equivalent to the universal function type. I'm not sure, though, and
before committing anything I'd like to understand this. If this is
equivalent to the universal function type (FUNCTION * *), is
(FUNCTION (&OPTIONAL * * &REST T)) likewise equivalent? Is there an
equivalent degree of freedom in the VALUES type axis? Is
(FUNCTION * (VALUES (&OPTIONAL * &REST T))) equivalent to (FUNCTION * *)?