PS. if you're after the greatest possible speed, you can also use the undocumented (and unofficial) ##c-code syntax (which does not offer *any* type conversions by itself, but as reward also doesn't consume any cpu cycles):
(define (frobvec2 vec) (if (not (##c-code " if (___U8VECTORP(___ARG1) && ___INT(___U8VECTORLENGTH(___ARG1))>=10) { char *p= ___CAST(char*,___BODY(___ARG1)); frobvec(p); ___RESULT=___TRU; } else { ___RESULT=___FAL; } " vec)) (error "invalid type of:" vec)))
Christian.