requiere 'cl o require' cl-lib

9

Para incluir la compatibilidad de Common Lisp, he visto ambos

(require 'cl)

y

(require 'cl-lib)

¿Cual es correcta? Según tengo entendido, cl-libes el último de los dos, pero ¿es seguro usarlo solo?

147pm
fuente

Respuestas:

16

La primera es la antigua biblioteca, la segunda es la nueva.

Los viejos se define cosas como defstruct, symbol-macrolet, incf, mientras que el segundo define vez cl-defstruct, cl-symbol-macrolety cl-incf.

El anterior está en desuso porque no obedece la regla general de que los paquetes deben usar un "prefijo de paquete" para todas sus definiciones para tratar de evitar conflictos con otros paquetes. IOW, el antiguo desordena el espacio de nombres, mientras que el nuevo tiene cuidado de usar solo identificadores que comiencen cl-.

Las versiones antiguas de Emacs solo vienen con, clpero puede instalar el cl-libpaquete de compatibilidad de reenvío de GNU ELPA que utiliza internamente las versiones anteriores cly simplemente reexporta las mismas definiciones con su nuevo nombre.

Las nuevas versiones de Emacs vienen con una versión real cl-libque no se usa clinternamente y en su lugar tienen un clpaquete de compatibilidad con versiones anteriores que usa internamente cl-liby simplemente reexporta las mismas definiciones con su nombre anterior.

Stefan
fuente