我在http://www.fractalconcept.com/fcweb/download/modlisp-clisp.lisp上使用mod_lisp和modlisp-clisp.lisp文件。我想根据server-id字段加载不同的包,这样我就可以设置不同的站点。我正试着这样做
(server-id:fetch-content request)带有带引号和未带引号的server-id,但它找不到包。一些文档搜索找到了我的find-package,但是当我这样做的时候
((find-package server-id):fetch-content request)上面写着
(FIND-PACKAGE SERVER-ID) should be a lambda expression.如何在给定包名称为字符串的情况下加载包?
发布于 2014-05-20 05:37:47
如果你想在调用函数时使用不同的符号,你必须计算它们。
(funcall (find-symbol (compute-the-name) (compute-the-package))
arg1 ... argn)请注意,包名和符号名通常都是大写字符串。
CL-USER 6 > (funcall (find-symbol "EXPT" "CL") 3 4)
81请注意,您不应该让用户通过网络指定任意函数和参数,然后在没有错误检查的情况下调用这些函数和参数。
发布于 2014-05-20 04:41:52
Common Lisp packages是其他系统所称的namespaces。
您必须使用load或require -或者文档指导您执行的任何操作-来提供所需的功能(包括包和函数)。
一旦将代码加载到Lisp中,您就可以使用list-all-packages查看哪些包现在可用。
https://stackoverflow.com/questions/23745877
复制相似问题