如何在LISP语言上读取文件和保存数据

如何在LISP语言上读取文件和保存数据,lisp,common-lisp,file-read,Lisp,Common Lisp,File Read,我有一个关于LISP编程语言的问题 我要做的是读取一个文件并将数据保存在该文件中 为此,我找到了这样的函数并执行了它 (defun get-file (pathname) (with-open-file (stream pathname) (loop for line = (read-line stream nil) while line collect line))) get-file("sample.txt") 这是一个未绑定的变量。为

我有一个关于LISP编程语言的问题

我要做的是读取一个文件并将数据保存在该文件中

为此,我找到了这样的函数并执行了它

(defun get-file (pathname)
  (with-open-file (stream pathname)
    (loop for line = (read-line stream nil)
          while line
          collect line)))

get-file("sample.txt")
这是一个未绑定的变量。为什么会发生错误? 如果我只是定义函数并编译,就不会有错误

如何正确写入路径名? 我的数据文件sample.txt与LISP代码文件位于同一目录中

数据保存在哪里

以及如何划分它们,因为文件是逐行读取的,所以具有不同属性的数据应该保存在同一行中

文件数据是这样保存的

name 23.0 22 123 33  //(one string and four numbers)
name2 23.5 11 156 42 //(one string and four numbers)
name3 21.7 15 167 55 //(one string and four numbers)
请帮帮我 我在LISP语言中很笨拙,因为我完全适应了C语言:

非常感谢

get-file 
("sample.txt")
有两种表达方式。。计算变量get file的函数,因为它不是函数。然后是表达式sample.txt,它尝试获取字符串sample.txt并调用它,就好像它是一个没有参数的函数一样

原因是您正在编写algol语法,就好像它是C或Java一样。编写lisp时需要编写lisp语法,如下所示:

(get-file "sample.txt")
路径名与启动程序的路径有关,因此,如果从与lisp文件相同的目录启动程序,它将在那里打开文件。如果您在主目录中,除非使用绝对路径,否则路径是相对于主目录的

为了保存数据,您需要打开一个文件保存并输出到该文件。现在的情况是,您只需列出行,在REPL中不会返回任何屏幕

您可以按空格分割字符串。可以使用将表示数字的字符串转换为数字。从字符串3.0读取不安全的方式;=>3.0


你需要为学习一门新语言做好准备。它的语法与基于Algol的C不同。现在几乎所有的编程语言都是如此,如果你知道几种语言,你可能知道同一种语言的几种方言。给它一点时间,你很快就会有一种新的最喜欢的编程语言。

你的函数定义是错误的。您没有在参数列表中放入字符串,而是放入变量名。数据不会保存在任何位置,函数只返回它读取的所有行的列表。由于参数列表不正确,您应该会在键入函数定义时立即收到错误。哦,这是我的错误,我编辑了我的问题。Sorryget-filesample.txt应该是get-file-sample.txt。这是基本的Lisp函数调用语法。