Isa*_*iah 3 lisp scheme common-lisp
我已经学会了计划并很快掌握了很多计划,然后在其中做了一个项目就好了.字面上花了我几天才完成.我现在正在尝试学习常见的口齿不清以获得对此的感觉,而现在我真的在努力学习asdf.如何将它与库一起使用似乎是常识,但我感到困惑.我想这是因为大多数lisp程序是在repl中制作并运行的,因为一切正常.当我尝试将它编译成可执行文件时,我正在失去我的位置.
是否有人可以给我任何建议或指向我的教程?我真的希望能够创建一个可执行文件给人们,而不必解释如何安装sbcl和(require)然后运行它.我只是想学习在lisp中做一些实质性的事情.
我想我可以使用方案并使用ffi来使c库工作,但我没有使用c的经验.我只是一个网络开发人员,出于个人原因学习lisp.当然,学习一些c和ffi可能不会像哈哈那样长.
谢谢
我真的希望能够创建一个可执行文件给人们,而不必解释如何安装sbcl和(require)然后运行它.
您不需要ASDF来生成"独立"可执行文件.大多数实现提供了保存可执行映像的方法,但是标准中没有提到如何执行此操作(以及如果要提供它).
通常,您会将代码加载到正在运行的映像中,然后"转储"该映像.
例如,在SBCL中,您将使用sb-ext:save-lisp-and-die ; CCL有ccl:save-application.您必须查看实现的文档以了解如何执行此操作.
我目前没有SBCL,但这个最小的例子应该可以工作(未经测试):
(defun do-it () (format t "hello world~%"))
(sb-ext:save-lisp-and-die "hello" :toplevel #'do-it :executable t)
Run Code Online (Sandbox Code Playgroud)
这是使用CCL的一个工作示例:
Welcome to Clozure Common Lisp Version 1.6-dev-r14287M-trunk (LinuxX8632)!
? (defun do-it () (format t "hello world~%"))
DO-IT
? (ccl:save-application "hello" :toplevel-function #'do-it :prepend-kernel t)
[danlei@susi ~/build/ccl]% ./hello
hello world
Run Code Online (Sandbox Code Playgroud)
这些可执行映像的大小可能相当大,除非你的实现提供类似树形摇动器的东西,但我不认为这应该是现在的问题.
您可以在另一个关于此主题的SO问题中找到clisp的详细示例.
| 归档时间: |
|
| 查看次数: |
722 次 |
| 最近记录: |