我用REPL(在Emacs / Slime中)写Common Lisp的次数越多,我越不愿意离开REPL来执行诸如创建目录,在目录中列出文件,更改目录的操作(尽管,cd
很好),等等。
所以我想知道其他Lispers是否使用REPL来执行我通常使用shell进行的文件操作,如果可以的话,它们如何做到这一点?我设法最好的方法开始围绕uiop写一些包装。有更好的方法吗?
答案 0 :(得分:4)
McLIM Lisp侦听器具有一些文件/目录命令
一个不寻常的选择是使用McCLIM。它是Lisp侦听器,具有bunch of commands,其中一些与文件和目录有关。也可以添加新命令。
命令看起来不像Lisp调用,但是它们提供提示,完成,帮助,对话框,命令列表,参数完成等。它们在内部由函数实现,但是它们可以处理具有大量元信息的类型化对象。因此,打印到侦听器的Lisp对象(如路径名)就是用户界面可以识别的对象。
典型命令可能是:
Show File /foo/bar.lisp
Show Directoy /foo/bar.lisp
Edit File /foo/bar.lisp
这来自Symbolics Lisp机器的Lisp侦听器,它引入了特定的用户界面,并具有各种精美的命令,而不仅仅是文件系统命令。可以列出一个目录,然后该目录列出的是实际路径名对象的表-可以用鼠标在其中显示一堆命令,具体取决于它是什么:主机,文件,目录等。 。McCLIM允许类似的事情。
McCLIM的主要缺点是它最常用的版本是基于相对原始的X11。我也希望它主要用于Linux(或类似版本)上。
但是在Lisp机器上,除了Zmacs中的Dired模式外,通常还具有文件系统浏览器。文件系统浏览器是另一个应用程序-具有非常古老的用户界面-还具有用于处理磁盘等的命令。
答案 1 :(得分:3)
不久前,我遇到了同样的问题,因此进行了一些研究。结果:
SHELISP:Common Lisp的Unix shell命令:
http://dan.corlan.net/shelisp/
Shelisp是一个非常简短的程序,它提供了用于构成的机制 并运行Unix shell(尤其是bash)命令和构造 来自Common Lisp。
从本质上讲,它提供了“!”您可以使用的语法 用于运行命令和'[]'嵌入式模式,您可以在其中输入bash 脚本并获取标准输出,作为Lisp字符串。
Lisp表达式可以使用'?'包含在任何命令或脚本中。 句法。新版本还包含一个“ sh”宏,该宏可以调用 unix实用程序直接使用lisp用户熟悉的语法。
我还没有使用过,但是我读了手册,看起来很有趣