如何查看一个CLOS类是否是另一个CLOS类的子类?
如果你想使CLOS对象成为常见的lisp可打印(可读打印),那么如何在不使用打印和读取的情况下进行此操作.
我已经对这个问题进行了一些研究,结果显而易见.在Common Lisp中似乎存在依赖于实现的Unix信号处理方式,但是是否有一个包提供了交叉实现的信号处理方式?
我主要想听听SIGINT并在我的应用程序中正常关机.我在linux上使用Clozure CL 1.7 ...就像提到的那样,对于这个包来说会很棒,但如果我不得不求助于特定于实现的代码,那就没问题.
我也没有完全嫁给使用SIGINT(尽管它是理想的).如果需要,我可以使用另一个信号.
如果这将是混乱的,有没有人有任何其他建议优雅地从应用程序外部关闭lisp应用程序?我有一个想法是创建一个应用程序监视的文件,如果它检测到文件,它会关闭......但是有点hacky.
谢谢!
我的代码库中有两个宏(和攀爬),如下所示:
(defmacro def-stat-method (method-name stat)
`(progn
(defmethod ,method-name ((monster monster))
(getf (stats monster) ,stat))
(defmethod (setf ,method-name) (value (monster monster))
(setf (getf (stats monster) ,stat) value))))
Run Code Online (Sandbox Code Playgroud)
还有这个:
(defmacro def-energy-method (method-name stat)
`(progn
(defmethod ,method-name ((monster monster))
(getf (energies monster) ,stat))
(defmethod (setf ,method-name) (value (monster monster))
(setf (getf (energies monster) ,stat) value))))
Run Code Online (Sandbox Code Playgroud)
每个宏都具有以下调用语法: (def-stat-method ranged-weapon :ranged-weapon)
我想要一个宏(def-foo-method macro-name method)扩展到适当的宏,以便(def-foo-method def-stat-method stats)扩展到上面的第一个例子.我是一个口齿不清的新手,并不知道该怎么做.所有帮助赞赏.
我需要为(with-hooks (monster method who what) &body body)我正在编写的游戏编写一个宏.Monster是一个CLOS对象,方法,谁是字符串,什么是函数(#'表示法).宏观扩张将会产生影响
(add-hook monster method who what)
,@body
(remove-hook monster method who)
Run Code Online (Sandbox Code Playgroud)
我完全不知道如何编写这样的宏,我将不胜感激.我有一种令人毛骨悚然的感觉,这很容易,我有点无知.