LISP编程语言如何读取文件和保存数据
How to read file and save data On LISP programming language
我有一个关于 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")
这打印了 "unbound variable"。为什么会发生错误?
(如果我只是定义了函数并编译,就没有报错)
如何正确写入路径名?
(我的数据文件(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 中没有返回任何屏幕。
您可以将字符串拆分为 space。您可以使用 parse-number 将表示数字的字符串转换为数字。一种不安全的方式是 (read-from-string "3.0") ; ==> 3.0
您需要为学习一门新语言做好准备。它的语法不同于基于 Algol 的 C。当今几乎所有的编程语言都是如此,如果您了解多种语言,您可能会了解相同语言的几种方言。给它时间,你很快就会拥有一种新的最喜欢的编程语言..
我有一个关于 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")
这打印了 "unbound variable"。为什么会发生错误? (如果我只是定义了函数并编译,就没有报错)
如何正确写入路径名? (我的数据文件(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 中没有返回任何屏幕。
您可以将字符串拆分为 space。您可以使用 parse-number 将表示数字的字符串转换为数字。一种不安全的方式是 (read-from-string "3.0") ; ==> 3.0
您需要为学习一门新语言做好准备。它的语法不同于基于 Algol 的 C。当今几乎所有的编程语言都是如此,如果您了解多种语言,您可能会了解相同语言的几种方言。给它时间,你很快就会拥有一种新的最喜欢的编程语言..