作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我喜欢基于图像的语言的想法,最近我一直在通过 sbcl 使用 Common Lisp。我在一些地方读到了关于如何通过能够保存和加载虚拟机的镜像,您可以改进在该镜像上运行的应用程序或应用程序集。
我知道如何将代码加载到图像中并让它运行,slime 使这种事情变得非常好,但我的问题是:我如何知道图像中定义了哪些函数?假设我想在函数运行数天或数月后对其进行更新,但我不记得名称了。有没有办法获得代码,甚至只是图像中定义的函数的名称?
现在,我确实将代码写入源代码并通过 repl 加载它,所以我在那里有一个副本,但这似乎是一个明显的功能。
最佳答案
Common Lisp 有 的想法包裹 .包是一种符号注册表,用作符号的命名空间。您可以向 Common Lisp 询问所有包的列表。
CL-USER 1 > (list-all-packages)
(#<The SQL-COMMON package, 0/4 internal, 28/32 external>
#<The LOOP package, 245/256 internal, 3/4 external>
#<The COMM package, 0/4 internal, 940/1024 external>
#<The REG package, 41/64 internal, 0/4 external>
...)
CL-USER 2 > (loop for symbol being
each external-symbol in (find-package "COMMON-LISP")
collect symbol)
(MAKE-ARRAY INVOKE-DEBUGGER STRING-TRIM ...)
CL-USER 3 > (apropos "MAKE-LOCK")
MP::INTERNAL-MAKE-LOCK (defined)
MP:MAKE-LOCK (defined)
WWW-UTILS:MAKE-LOCK (defined)
MAKE-LOCK
RESOURCES::MAKE-LOCK (defined)
MINIPROC:MAKE-LOCK (defined)
CL-USER 4 > (symbol-function 'www-utils:make-lock)
#<Function WWW-UTILS:MAKE-LOCK 41E006A69C>
CL-USER 5 > (defun foo (a) (* (sin a) a))
FOO
CL-USER 6 > (pprint (function-lambda-expression 'foo))
(LAMBDA (A)
(DECLARE (SYSTEM::SOURCE-LEVEL #<EQ Hash Table{0} 41403151C3>))
(DECLARE (LAMBDA-NAME FOO))
(* (SIN A) A))
CL-USER 7 > (ed 'www-utils:make-lock)
关于common-lisp - 进化 lisp 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5047787/
我喜欢基于图像的语言的想法,最近我一直在通过 sbcl 使用 Common Lisp。我在一些地方读到了关于如何通过能够保存和加载虚拟机的镜像,您可以改进在该镜像上运行的应用程序或应用程序集。 我知道
我是一名优秀的程序员,十分优秀!