Afin d'inclure la compatibilité Common Lisp, j'ai vu les deux
(require 'cl)
et
(require 'cl-lib)
Qui est correct? Si je comprends bien, cl-lib
c'est la dernière des deux, mais est-il sûr de l'utiliser uniquement?
la source
Afin d'inclure la compatibilité Common Lisp, j'ai vu les deux
(require 'cl)
et
(require 'cl-lib)
Qui est correct? Si je comprends bien, cl-lib
c'est la dernière des deux, mais est-il sûr de l'utiliser uniquement?
La première est l'ancienne bibliothèque, la seconde est la nouvelle.
L'ancien définit les choses comme defstruct
, symbol-macrolet
, incf
tandis que la seconde place définit cl-defstruct
, cl-symbol-macrolet
et cl-incf
.
L'ancien est obsolète car il n'obéit pas à la règle générale selon laquelle les packages doivent utiliser un "préfixe de package" pour toutes leurs définitions afin d'éviter les conflits avec d'autres packages. IOW l'ancien gâche l'espace de noms tandis que le nouveau prend soin de n'utiliser que des identifiants commençant par cl-
.
Les anciennes versions d'Emacs ne sont fournies qu'avec cl
mais vous pouvez installer le cl-lib
package de compatibilité ascendante de GNU ELPA qui utilise en interne l'ancien cl
et réexporte simplement les mêmes définitions sous leur nouveau nom.
Les nouvelles versions d'Emacs sont livrées avec un vrai cl-lib
qui n'utilise pas en cl
interne et à la place, elles ont un cl
package de compatibilité descendante qui utilise en interne cl-lib
et réexporte simplement les mêmes définitions sous leur ancien nom.