首先使用文件输入然后从用户输入运行交互式REPL

时间:2014-02-20 20:27:13

标签: shell lisp read-eval-print-loop sbcl command-line-interface

我正在尝试在lisp REPL中运行用Lisp编写的旧工具。我可以每次运行它来打开lisp REPL,(load ...)该工具的Lisp源,然后运行工具命令打开文件:(doStuff "filename" t)。此时它会以交互方式启动,询问我输入的内容。

我希望能够做的是编写一些加载工具的脚本,打开文件(这是脚本(doStuff "$1" t)的参数),然后进入交互模式。

就我的研究和实验而言,在我使用的Lisp(SBCL 1.0.57)中没有办法运行文件然后进行交互。我可以运行我重定向/管道输入到lisp的输入,但是一旦我用重定向替换标准,文件整个过程是非交互的(如果我错了,请纠正我,但这就是管道到目前为止的作用)我认为)。

我想要的是以某种方式为Lisp REPL提供几行来运行,然后让它开始从我那里获取输入。然后我可以把它放在一个带有一个参数(要使用的文件)的脚本中并运行命令,在必要时提示我输入。

此外,这不需要跨平台或很好看。我会对任何可行的任何hacky CLI fu感到高兴。

1 个答案:

答案 0 :(得分:4)

您使用2.3.2 Toplevel Options中记录的命令行选项--load

--load filename
     

这相当于--eval '(load "filename")'。特殊的语法   旨在减少从shell调用SBCL时的引用令人头疼的问题   脚本。

例如:

$ cat hello.lisp 
(print "Starting with a special startup script!")

$ sbcl --load hello.lisp 
This is SBCL 1.0.49, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.

"Starting with a special startup script!" 
* (print 'at-the-repl)

AT-THE-REPL 
AT-THE-REPL