Subject: RE: [External] : bug#76476: Make cl-first, cl-second, ..., cl-tenth part of Emacs Lisp

From: Drew Adams <[email-masked]>
Date: Fri, 21 Feb 2025 20:39:21 +0000

> Severity: wishlist
> 
> I propose making the following functions from cl-lib.el a part of
> Emacs Lisp proper (i.e. defined in subr.el):
> 
>     first
>     second
>     third
>     fourth
>     fifth
>     sixth
>     seventh
>     eight
>     ninth
>     tenth
>     rest
> 
> This would allow converting code such as:
> 
>     (mapcar (lambda (thing) (car (cdr (cdr (cdr thing))))) ...)
>     (mapcar (lambda (thing) (cadddr thing)) ...)
>     (mapcar (lambda (thing) (nth 3 thing)) ...)

Aka (mapcar #'cadddr ...)  ;-)

> to the IMHO, more direct and readable:
> 
>     (mapcar #'fourth ...)
> 
> I'm adding `rest' to the list as well, as the natural corollary to
> `first'.
> 
> Which would be used is obviously situational, and should be left to
> whoever is touching that code.  There is no general need to "upgrade"
> old code to prefer these new functions.
> 
> Thoughts?

Since you asked...

There are about 8 zillion things in cl-* that it would
be more useful to add to Elisp (without prefix `cl-')
than those functions.

That said, it wouldn't hurt to add those functions, but
why not do something more useful while you're at it?

E.g., something like cl-case (sans cl-) should have been
added to Elisp eons ago.  (And in fact if you loaded
cl.el you got it as `case', not `cl-case', originally.)

Better to look for more useful parts of cl-lib...