exigir 'cl ou exigir' cl-lib

9

Para incluir a compatibilidade do Common Lisp, vi ambos

(require 'cl)

e

(require 'cl-lib)

Qual é correto? Pelo que entendi o cl-libé o mais recente dos dois, mas é seguro usá-lo apenas?

147pm
fonte

Respostas:

16

A primeira é a biblioteca antiga, a segunda é a nova.

Os velhos se define coisas como defstruct, symbol-macrolet, incf, enquanto o segundo define vez cl-defstruct, cl-symbol-macrolete cl-incf.

O antigo foi descontinuado porque não obedece à regra geral de que os pacotes devem usar um "prefixo de pacote" para todas as suas definições para tentar evitar conflitos com outros pacotes. Como o antigo atrapalha o namespace, o novo é cuidadoso ao usar apenas identificadores que começam com cl-.

As versões antigas do Emacs são fornecidas apenas com ele, clmas você pode instalar o cl-libpacote de compatibilidade direta do GNU ELPA, que usa internamente a clversão antiga e apenas reexporta as mesmas definições sob o novo nome.

As novas versões do Emacs vêm com um real cl-libque não é usado clinternamente e, em vez disso, possuem um clpacote de compatibilidade com versões anteriores que usa internamente cl-libe apenas reexporta as mesmas definições com o nome antigo.

Stefan
fonte