Как выйти из пакета, который я использую в обычном lisp? - PullRequest
1 голос
/ 21 декабря 2011

Я определяю пакет

 [10]> (defpackage :abc)
 #<PACKAGE ABC>
 [11]>

Я использую этот пакет

 [15]> (in-package :abc)
 #<PACKAGE ABC>
 ABC[16]>

Как выйти из ABC [16] в [17]?

Спасибо ~

Ответы [ 2 ]

4 голосов
/ 21 декабря 2011

Строго говоря, вы не используете пакет с in-package, но вы установить текущий пакет. Чтобы использовать пакет, вы должны использовать use-package.

Возвращаясь к вашей проблеме, вы определили новый пакет (без использования :cl так что вам придется использовать (cl:+ 1 2), чтобы сделать дополнение) и установить его как текущий пакет. COMMON-LISP-USER a.k.a. CL-USER является текущий пакет при запуске вашей системы lisp, чтобы он вернулся вам просто нужно сделать (cl:in-package :cl-user).

Здесь - хорошее руководство по пакетам в Common Lisp. Эта глава в PCL тоже очень хорошо. Но ссылка все еще CLHS

1 голос
/ 22 декабря 2011

Вы должны вернуться к пакету :cl-user по (in-package :cl-user).Пакеты Common Lisp обычно немного запутывают новичков.Я также рекомендую прочитать учебник Эрана Гата по пакетам.Как правило, в случае серьезной (т.е. большой) программы люди склонны делать определения пакетов в отдельном файле, который включает (defpackage :foo ... ), а реальный код переходит в другой, который обычно начинается с (in-package :foo).Затем с помощью средства определения системы, такого как ASDF , файл, который состоит из определений пакета, очищается и загружается до фактического файла.Согласно моему скромному взгляду и опыту, самый простой способ разгадать загадку пакета - это прочитать реальный код, разработанный опытными лисперсами после короткого учебного занятия.

...