common-lisp – requieren 'cl o requieren' cl-lib

Pregunta:

Para incluir compatibilidad con Common Lisp, he visto ambos

(require 'cl)

y

(require 'cl-lib)

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

Respuesta:

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

El anterior define cosas como defstruct , symbol-macrolet , incf , mientras que el segundo define en cambio cl-defstruct , cl-symbol-macrolet y cl-incf .

El anterior está en desuso porque no obedece a 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 anterior estropea el espacio de nombres, mientras que el nuevo tiene cuidado de usar solo identificadores que comienzan con cl- .

Las versiones antiguas de Emacs solo vienen con cl pero puede instalar el paquete de compatibilidad con versiones posteriores cl-lib de GNU ELPA que usa internamente el cl antiguo y simplemente reexporta las mismas definiciones con su nuevo nombre.

Las nuevas versiones de Emacs vienen con un cl-lib real que no usa cl internamente y en su lugar tienen un paquete de compatibilidad con versiones anteriores de cl que usa internamente cl-lib y simplemente reexporta las mismas definiciones con su nombre anterior.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım