将参数从文本文件传递到Lisp?

将参数从文本文件传递到Lisp?,lisp,common-lisp,clisp,Lisp,Common Lisp,Clisp,各位。我最近开始使用(通用)Lisp,现在我正试图找出如何将它用于一些文本文件的内容。我有test.lisp: (defun double (x) (* 2 x)) (defun main (arg) (print (double arg)) (quit)) 我用 clisp-c-q test.lisp 并在Linux终端上用 clisp-q-q-x'(程序(负载“测试”)(主10)(退出))' 这给了我输出“20”。这很好,但是有没有一种方法可以从某个地方的文本文件(tes

各位。我最近开始使用(通用)Lisp,现在我正试图找出如何将它用于一些文本文件的内容。我有test.lisp:

(defun double (x)
    (* 2 x))

(defun main (arg)
    (print (double arg))
(quit))
我用

clisp-c-q test.lisp

并在Linux终端上用

clisp-q-q-x'(程序(负载“测试”)(主10)(退出))'

这给了我输出“20”。这很好,但是有没有一种方法可以从某个地方的文本文件(testing.txt)传递10?或者甚至可以从一些用C编写的程序的输出,例如?我知道只传递一个参数是很简单的,但是一旦我知道如何至少传递一个参数,我就可以使用多个参数了。我用来运行它的命令实际上看起来就像我把这三个命令/函数扔进了REPL,所以也许有另一种方法来运行我丢失的文件

也许这是一个毫无意义的问题,但如果有办法做到这一点,我会感谢你的帮助


提前感谢。

使用打开文件的
来打开文件(它打开文件,并在执行离开其作用域时自动关闭)

如果您有这样的文本文件:

13
19
(with-open-file (in #p"foo" :direction :input)
  (let ((numbers (loop :for line := (read-line in nil)
                       :while line
                       :collect (parse-integer line))))
    (reduce #'+ numbers)))
您可以按如下方式加载和添加这些数字:

13
19
(with-open-file (in #p"foo" :direction :input)
  (let ((numbers (loop :for line := (read-line in nil)
                       :while line
                       :collect (parse-integer line))))
    (reduce #'+ numbers)))

好吧,让我们从你的最终目标开始。是为了得到C程序的输出吗?或者只是一个文件的内容?或者完全是别的什么?为什么会产生巨大的差异,在问题中清晰地表达出来是很重要的。对不起,我没有意识到它是如此重要。在这里,我的目标只是将文本文件中的值作为参数传递给我的“main”函数。正如我所说,这可能是一个毫无意义的问题,因为我不一定有最终目标,我只是好奇。为了找到答案,假设我的目标是通过Lisp函数“main”运行C或Java程序的输出。这应该不难。你看过CL(例如)的文件管理功能了吗?@nandom好的,听起来好奇是你的最终目标。那很好。我要求这样做的原因是为了防止一个问题:如果你正在试图解决一个实际问题,最好提前知道那是什么。:-)但正如我所说,好奇心也很好。@潜伏者哦,你说得对。这是一个很好的资源,谢谢:)我想我只是习惯了用猫来传递争论哈哈。不过我想我可以用这个,谢谢。我的错。