Ответ 1
При использовании большого количества сторонних библиотек и написании моего собственного кода eLisp я никогда не сталкивался с ситуацией, когда использование CL-пакета приводило к конфликту имен. Итак, у меня возникло бы желание сказать, что аргумент против использования CL - это не что иное, как пуританство (в первоначальном смысле этого слова, а не в религиозной стороне вещей).
Но если вы планируете очень долгое время поддерживать и хотите иметь какую-то резервную копию, вот что я буду делать (но я этого не делаю сам, потому что исправление вещей, когда они сломаны, похоже, быть лучшей тактикой). Для функций в пакете CL, которые вы используете, создайте специальный файл, в котором вы defalias
все из них должны иметь префикс cl-
. Так, например, вместо (position ...)
у вас будет (cl-position ...)
. Теоретически сэкономит вам проблему передовой совместимости. Однако функции не удаляются мгновенно, вы получите предупреждение до того, как их устарели, и у вас будет много времени для обновления. До вас, действительно.
Макрос контура в Common Lisp является полемикой сам по себе, это не типичная конструкция для языка, и поэтому, например, существует итерационная библиотека. Это также требует, чтобы вы научились "мини-языку цикла", чтобы использовать его хорошо, что является своего рода небольшим языком, специфичным для домена, и на самом деле нет требования к тому, чтобы этот тип конструкции использовал его. НО, петля имеет свои сильные стороны. Функции обработки списка, такие как mapcar
или reduce
, помогут вам в более простых случаях, например, в вашем примере, но в менее простых случаях loop
будет лучше, а также менее подробным способом делать то же самое.