我目前正在编写向量算术的小型实现,并且我想定义我自己的«-» 和 «+»(也许还有其他)函数来对向量进行操作。
而且我还想将所有这些功能放在一个包中。
我想要这个假设的包,比如说它叫做«vec»,表现得像这样:
- 在包内,我定义了函数«-» 和 «+»,但是当我调用+ 或 -(在同一个包内)时,会调用 Common Lisp 内置函数。
- 如果以前不可能,我想调用 builtin
+
和-
ascl:+
andcl:-
,但无需从:cl
. - 当我导入
vec
包时,或者在另一个包的定义部分提到它时:use
,common-lisp包的«-»和«+»仍然可用,并且包vec的函数被称为like ,因此和(vec:+ v1 v2)
之间没有名称冲突。vec:+
cl:+
那么,什么被认为是实现这种行为的最佳(和正确)方法?