Um die Common Lisp-Kompatibilität einzuschließen, habe ich beide gesehen
(require 'cl)
und
(require 'cl-lib)
Welches ist richtig? Soweit ich cl-lib
weiß, ist das der spätere von beiden, aber ist es sicher, nur ihn zu verwenden?
quelle
Um die Common Lisp-Kompatibilität einzuschließen, habe ich beide gesehen
(require 'cl)
und
(require 'cl-lib)
Welches ist richtig? Soweit ich cl-lib
weiß, ist das der spätere von beiden, aber ist es sicher, nur ihn zu verwenden?
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-macrolet
und 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, cl
aber Sie können das cl-lib
Vorwärtskompatibilitätspaket von GNU ELPA installieren, das intern die alten verwendet cl
und nur dieselben Definitionen unter ihrem neuen Namen erneut exportiert.
Neue Versionen von Emacs werden mit einem Real geliefert, cl-lib
das nicht cl
intern verwendet wird. Stattdessen verfügen sie über ein cl
Abwärtskompatibilitätspaket, cl-lib
das dieselben Definitionen intern verwendet und nur unter ihrem alten Namen erneut exportiert.