Requiring `cl-lib` is not enough to get the side-effect-free property on functions like cl-fifth. To see this, run emacs -Q and evaluate: (progn (require 'cl-lib) (describe-function 'cl-fifth) (function-get 'cl-fifth 'side-effect-free)) Note that the form returns nil, and that the "This function does not change global state" text is not there in the *Help* buffer. This can be fixed by adding this to the above recipe: (require 'cl-macs) I have attached a patch that fixes this, and also gets the proper (put 'cl-foo 'side-effect-free t) forms into cl-loaddefs.el. If this looks okay, I think we could do the same for the (side-effect-free error-free) case as well.