membutuhkan 'cl atau membutuhkan' cl-lib

9

Untuk memasukkan kompatibilitas Common Lisp saya telah melihat keduanya

(require 'cl)

dan

(require 'cl-lib)

Yang mana yang benar? Seperti yang saya pahami, cl-libini adalah yang terakhir dari keduanya, tetapi apakah aman untuk menggunakannya saja?

147 siang
sumber

Jawaban:

16

Yang pertama adalah perpustakaan lama, yang kedua adalah yang baru.

Yang lama mendefinisikan hal-hal seperti defstruct, symbol-macrolet, incf, sedangkan mendefinisikan kedua sebaliknya cl-defstruct, cl-symbol-macroletdan cl-incf.

Yang lama sudah usang karena tidak mematuhi aturan umum bahwa paket harus menggunakan "paket awalan" untuk semua definisi mereka untuk mencoba dan menghindari konflik dengan paket lain. TKI yang lama mengacaukan namespace sedangkan yang baru berhati-hati untuk hanya menggunakan pengidentifikasi yang dimulai dengan cl-.

Versi lama Emacs hanya datang dengan cltetapi Anda dapat menginstal cl-libpaket kompatibilitas-maju dari GNU ELPA yang secara internal menggunakan yang lama cldan hanya mengekspor ulang definisi yang sama dengan nama baru mereka.

Versi baru Emacs hadir dengan versi nyata cl-libyang tidak digunakan secara clinternal dan sebagai gantinya mereka memiliki clpaket kompatibilitas mundur yang secara internal menggunakan cl-libdan hanya mengekspor ulang definisi yang sama dengan nama lama mereka.

Stefan
sumber