【发布时间】:2013-11-08 07:38:41
【问题描述】:
我目前正在编写向量算术的小型实现,我想定义自己的«-» 和 «+»(可能还有其他)函数来对向量进行操作。
而且我还想将所有这些功能放在一个包中。
我想要这个假设的包,假设它叫做 «vec»,表现得像这样:
- 在包内,我定义了函数 «-» 和 «+»,但是当我调用 + 或 -(在同一个包内)时,会调用 Common Lisp 内置函数。
- 如果以前不可能,我想将内置
+和-称为cl:+和cl:-,但无需从:cl显式导入所有其他需要的函数。 - 当我导入
vec包,或者在另一个包的定义:use部分提到它时,common-lisp包的«-»和«+»仍然可用,并且包vec的函数被称为(vec:+ v1 v2),所以vec:+和cl:+之间没有名称冲突。
那么,什么被认为是实现这种行为的最佳(和正确)方法?
【问题讨论】:
-
redefining built-in function 的可能重复项
-
您可能对Antik 的网格子系统感兴趣,它定义了泛化数组(包括外来数组)的操作。数学和一些数组操作符号被遮蔽。查看文件 init/package.lisp 以了解阴影是如何完成的。
-
@Liam,谢谢,我去看看。
-
@sds,不是真的。我对包裹特别感兴趣,但这个问题的答案确实非常适合我的情况!谢谢。
标签: common-lisp packages