exiger «cl ou exiger» cl-lib

9

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-libc'est la dernière des deux, mais est-il sûr de l'utiliser uniquement?

147pm
la source

Réponses:

16

La première est l'ancienne bibliothèque, la seconde est la nouvelle.

L'ancien définit les choses comme defstruct, symbol-macrolet, incftandis que la seconde place définit cl-defstruct, cl-symbol-macroletet 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 clmais vous pouvez installer le cl-libpackage de compatibilité ascendante de GNU ELPA qui utilise en interne l'ancien clet réexporte simplement les mêmes définitions sous leur nouveau nom.

Les nouvelles versions d'Emacs sont livrées avec un vrai cl-libqui n'utilise pas en clinterne et à la place, elles ont un clpackage de compatibilité descendante qui utilise en interne cl-libet réexporte simplement les mêmes définitions sous leur ancien nom.

Stefan
la source