Let's also consider it like this: `subr-arity' exists. But it has extremely narrow and non-obvious field of use. Compare: (subr-arity (symbol-function 'car)) => (1 . 1) (subr-arity (symbol-function 'caar)) => eval: Wrong type argument: subrp, #[257 "‰@@‡" [] 2 2409164] And to make it even weirder (from `dash.el'): (defalias '-first-item 'car "Return the first item of LIST, or nil on an empty list.") (subr-arity (symbol-function '-first-item)) => (wrong-type-argument subrp car) What if I use `subr-arity' for whatever reason in a case where it works, but in the next version Emacs moves the function from `.c' to `.el' and it ceases to be a built-in? Paul ​