lisp - LISP编程语言如何读取文件和保存数据

标签 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")

这打印了“未绑定(bind)变量”。为什么会发生错误? (如果我只是定义函数并编译,没有错误)

如何正确写入路径名? (我的数据文件(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 中返回任何屏幕。

您可以按空格拆分字符串。您可以使用 parse-number 将表示数字的字符串转换为数字。 .一种不安全的方式是 (read-from-string "3.0") ; ==> 3.0

您需要为学习一门新语言做好准备。它的语法不同于基于 Algol 的 C。当今几乎所有的编程语言都是如此,如果您了解多种语言,您可能会了解同一语言的几种方言。给它时间,您很快就会拥有一种新的最喜欢的编程语言。

关于lisp - LISP编程语言如何读取文件和保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44372415/

相关文章:

lisp - 关于 LISP 中关于格式函数的语句的解释

python - 最好是读取整个文件,关闭它,然后遍历它,或者在它打开时循环遍历?

lisp:如何在范围内创建临时方法特化

lisp - 如何在 Scheme 中将符号用作函数?

lisp - 替换 lisp 中的函数

lisp - 使用宏弹出列表中的第一个元素

lisp - 普通口齿不清 : avoid evaluation of a symbol in a function

emacs - 如何退出 SLIME - 逗号或退出不起作用

c - 从文件读取到链接列表时出现问题

matrix - 从 Julia 中的文本文件读取数据矩阵