erfordern 'cl oder erfordern' cl-lib

9

Um die Common Lisp-Kompatibilität einzuschließen, habe ich beide gesehen

(require 'cl)

und

(require 'cl-lib)

Welches ist richtig? Soweit ich cl-libweiß, ist das der spätere von beiden, aber ist es sicher, nur ihn zu verwenden?

147 Uhr
quelle

Antworten:

16

Die erste ist die alte Bibliothek, die zweite ist die neue.

Die alten definieren Dinge wie defstruct, symbol-macrolet, incf, während der zweiten definiert statt cl-defstruct, cl-symbol-macroletund cl-incf.

Das alte ist veraltet, da es nicht der allgemeinen Regel entspricht, dass Pakete für alle ihre Definitionen ein "Paketpräfix" verwenden sollten, um Konflikte mit anderen Paketen zu vermeiden. IOW, der alte bringt den Namespace durcheinander, während der neue darauf achtet, nur Bezeichner zu verwenden, die mit beginnen cl-.

Alte Versionen von Emacs werden nur mitgeliefert, claber Sie können das cl-libVorwärtskompatibilitätspaket von GNU ELPA installieren, das intern die alten verwendet clund nur dieselben Definitionen unter ihrem neuen Namen erneut exportiert.

Neue Versionen von Emacs werden mit einem Real geliefert, cl-libdas nicht clintern verwendet wird. Stattdessen verfügen sie über ein clAbwärtskompatibilitätspaket, cl-libdas dieselben Definitionen intern verwendet und nur unter ihrem alten Namen erneut exportiert.

Stefan
quelle