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?
fonte
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?
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-macrolet
e 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, cl
mas você pode instalar o cl-lib
pacote de compatibilidade direta do GNU ELPA, que usa internamente a cl
versã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-lib
que não é usado cl
internamente e, em vez disso, possuem um cl
pacote de compatibilidade com versões anteriores que usa internamente cl-lib
e apenas reexporta as mesmas definições com o nome antigo.