Существует ли общее соглашение по именованию пакетов в lisp? - PullRequest
20 голосов
/ 16 ноября 2009

Я создал несколько своих пользовательских пакетов и столкнулся с конфликтом имен.

В Java соглашение об именах должно использовать ваше доменное имя в имени пакета: например import com.example.somepackage;.

Существуют ли какие-либо широко используемые соглашения об именах пакетов для распространенных пакетов lisp?

С уважением,

Russell

Ответы [ 3 ]

20 голосов
/ 16 ноября 2009

Соглашение, которое я использую, состоит в том, чтобы использовать уникальное слово: salza, skippy, zs3 и т. Д. Я действительно не пытаюсь иметь прямое отношение к функциональности библиотеки. Я стараюсь избегать общих слов, которые другие могут использовать, например, «zlib», «zip» или «png».

Эди Вейц использует слова, связанные с Фрэнком Заппой, чтобы назвать многие из своих посылок: Hunchentoot, Drakma и т. Д.

Некоторые люди используют обратное именование доменов в стиле Java org.foo.bar.

Итак, прямой ответ - нет, не существует общего, согласованного соглашения, которое используют все.

7 голосов
/ 16 ноября 2009

Одно соглашение, которое вы иногда видите, - это пакеты, которые предоставляют тонкую оболочку совместимости по сравнению с обычно реализуемыми, но нестандартизированными функциями часто называют TRIVIAL-SOMETHING.

Это приводит к некоторым действительно замечательным именам: библиотека для работы с *FEATURES* независимым от реализации способом называется TRIVIAL-FEATURES; еще лучше, библиотека для взаимодействия со сборщиком мусора стандартизированным способом называется TRIVIAL-GARBAGE.

4 голосов
/ 18 февраля 2012

Нет общего соглашения, но есть несколько шаблонов:

  1. Когда библиотека является портом из какого-либо другого языка, оболочки или библиотеки интерфейсов, ей часто предшествует cl-, например cl-gtk2 или cl-ppcre. Хотя было время, когда этим префиксом злоупотребляли, и было много пакетов (например, cl-who), которые реализуют уникальную функциональность, но все еще используют ее.
  2. Если пакет зависит от реализации, к нему добавляется сокращение (особенно: sb-), например sb-queue или lw-compat.
  3. Если пакет является уровнем совместимости между реализациями, к нему часто добавляется префикс trivial-, например trivial-backtrace или trivial-garbage
  4. Существует также префикс s-, который может обозначать «символический», как s-xml, но он используется редко.

Эти префиксы помогают сделать имя пакета уникальным и, таким образом, упростить поиск информации о нем в Интернете.

В противном случае нет конкретных соглашений, но общее правило заключается в том, чтобы отдавать предпочтение коротким, уникальным и, возможно, описательным именам. По причинам легкости запоминания, использования и поиска информации.

Если пакет имеет длинное имя, удобно использовать более короткий псевдоним, потому что чаще всего люди используют символы пакета, соответствующие их именам. Например, в своем коде я добавляю псевдоним re к cl-ppcre, и это делает код клиента намного более понятным и понятным. Хотя следует соблюдать осторожность, чтобы псевдонимы не вызывали конфликтов имен.

...