【发布时间】:2017-03-27 18:26:30
【问题描述】:
我有一个这样的 .txt 文件:
0
1
2
3
4
5
6
7
8
0
1
2
3
4
5
6
7
8
我希望 LISP 读取文本文件并生成两个列表,第一个包含文本文件的前九个值,第二个包含接下来的九个值。像这样:List1 = (0 1 2 3 4 5 6 7 8),List2 = (0 1 2 3 4 5 6 7 8)。 我有这些代码:
(DEFUN text()
(SETQ l NIL)
(LOOP
(UNLESS (NULL l) (SETQ LST1 (LIST (READ l)(READ l)(READ l)(READ l)(READ l)(READ l)(READ l)(READ l)(READ l))
LST2 (LIST (READ l)(READ l)(READ l)(READ l)(READ l)(READ l)(READ l)(READ l)(READ l))
eb (LST1) em (LST2))
(CLOSE l) (RETURN (ASTAR LST1 LST2)))
(SETQ l (OPEN filename :if-does-not-exist nil))))
【问题讨论】:
-
这看起来不像是正确使用
loop宏。另请注意,您已经创建了一个递归函数,因为您从read调用了 18 次read.. 他们每个人都会一次又一次地调用read18 次..... -
不要调用你的函数
read,这是标准 CL 函数的名称。 -
@Sylwester Loop 承认一个简单的形式(循环 progn),但这里的用法并不漂亮
标签: lisp common-lisp