【发布时间】:2018-05-25 19:43:42
【问题描述】:
我尝试使用 Common Lisp 包,但我有几个(可能是命名约定)问题,首先是使用“#:”,这似乎没有必要,但就像 sharp-quote in functions 一样,根据您的上下文使用更好.
(defpackage #:match-test
(:use #:match
#:fiveam
#:cl)
(:export #:run!
#:test-match)
(:documentation "Test package for testing match project 1 of CS202"))
然后是如何使用那个包
(in-package #:match-test)
(in-package :match-test)
(in-package match-test)
它有效,但是当我想删除该软件包时,它仅适用于:
CL-USER> (delete-package (in-package #:match-test))
#<BOOLEAN <<error printing object>> {2010004F}>
它给出了那个错误,但它完成了工作。好像是把包当作对象,我也看不懂hyperspec,是我需要学习CLOS的问题,没错我是初学者学习Lisp,但我想我可以轻松澄清我的疑问。
希望我说的很清楚。
最后我想说的是我用了emacs + sly + roswell 和
CL-USER> (lisp-implementation-type)
"SBCL"
CL-USER> (lisp-implementation-version)
"1.4.6"
【问题讨论】:
-
如果您在将它们作为形式求值的地方(例如
DELETE-PACKAGE的参数)使用非内部符号(如#:FOO)作为名称,则必须像引用任何其他符号一样引用它们(例如(delete-package '#:match-test))。 -
别心疼,CLHS不是很平易近人。试试gigamonkeys.com/book
标签: common-lisp packages