Para incluir la compatibilidad de Common Lisp, he visto ambos
(require 'cl)
y
(require 'cl-lib)
¿Cual es correcta? Según tengo entendido, cl-lib
es el último de los dos, pero ¿es seguro usarlo solo?
fuente
Para incluir la compatibilidad de Common Lisp, he visto ambos
(require 'cl)
y
(require 'cl-lib)
¿Cual es correcta? Según tengo entendido, cl-lib
es el último de los dos, pero ¿es seguro usarlo solo?
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-macrolet
y 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, cl
pero puede instalar el cl-lib
paquete de compatibilidad de reenvío de GNU ELPA que utiliza internamente las versiones anteriores cl
y simplemente reexporta las mismas definiciones con su nuevo nombre.
Las nuevas versiones de Emacs vienen con una versión real cl-lib
que no se usa cl
internamente y en su lugar tienen un cl
paquete de compatibilidad con versiones anteriores que usa internamente cl-lib
y simplemente reexporta las mismas definiciones con su nombre anterior.