我试图了解Lisp的部分内容,到目前为止我还没有用过很多东西.读宏已经引起了我的注意.没有一个巨大的关于他们的信息的量使用,它会帮看看什么人跟他们做,既能得到它们是如何工作的例子,也看什么类型的问题可以与他们接近.接下来,是否有任何指导方针可以了解读取宏的优缺点是什么?
如何从命令行与本地长时间运行的Common Lisp映像(可能是守护进程)进行交互?
我知道可以从终端命令提示符运行Common Lisp函数,我也知道这一点.
我需要做类似的事情,但是使用本地的,已经长时间运行的 Common Lisp映像,能够从CLI或shell脚本中轮询可用的函数.
有没有办法从CLI执行此操作,例如从bash脚本调用函数,并接收函数返回的任何内容?
例如,我可以创建一个原始的Web服务,可能使用woo或Hunchentoot,调用函数并通过curl或获取返回值wget,但感觉有点复杂.
当然,这是Emacs的SLIME的众多功能之一,但我需要从CLI调用函数,而不需要调用Emacs.
也许有一种方法可以在SLIME之外达到一个swank后端?
如果可能的话,那会是什么样的lisp惯用方法呢?
我会感激任何指针.
许多年前,我对能够远程运行长期运行的LISP图像感到好奇(我相信在这种情况下,大写名称应该没问题).如果我没记错的话,可以在prompt.franz.com上找到.一篇文章,以某种方式连接:telnet用于远程访问正在运行的应用程序
Telnet当然是非常不安全的,但无论出于何种原因,能够以这种方式访问Lisp应用程序的用处都不能过分夸大,至少对某些人来说是这样.
我要感谢Basile Starynkevitch的精心和彻底的答案,特别是在理论方面.我正在寻找一个更实用的方向,特别是连接到Common Lisp.不过,他的回答非常有启发性.
我已准备好开始编写本地服务器,可能使用一个优秀的Common Lisp库,例如:
但是,多亏了Stanislav Kondratyev,我没有必要.他指出了一个已经存在的解决方案很好地回答了我的问题,ScriptL:Shell脚本编写了类似Lisp的问题
我在Linux,FreeBSD和OS X上成功测试了它,只需确保首先在POSIX系统调用上安装瘦包装器.在许多功能(参见自述文件)中,它允许公开所选功能,正确处理安全性,甚至提供自定义C客户端,它作为ASDF加载操作的一部分构建,并支持许多新功能,例如I/O代替netcat.
我正在从系统的各个地方调用 CL 脚本。如何获取当前执行的脚本的文件路径?
例如,脚本源文件位于/home/user/project/source/目录中。该脚本正在/home/user/以下列方式从目录执行:
user@machine:~$ ./project/source/script.lsp
不管调用者的位置如何,脚本都应该知道它位于/home/user/project/source/目录中。
我已经尝试使用该*default-pathname-defaults*变量,但以下命令显示了调用脚本的目录:
(format t "Pathname: ~S~&" *default-pathname-defaults*)
环境:Ubuntu 18.04 上的 SBCL 1.4.5.debian。