1 (use-modules (ice-9 rdelim))
2
3 (define (show l) (display l))
4
5 (define (read-two-lines)
6 (let ((count (read-line))
7 (l (read-line)))
8 (show l))) ; or (show count)
9
10 (read-two-lines)
上面的代码无法将第二行读入l。相反,它只读取相同的值两次: -
scheme@(guile-user)> (load "test.scm")
line1
line2
line1
当line1后跟line2作为输入时,它将line1显示为输出而不是line2。这里发生了什么?
答案 0 :(得分:2)
我没有安装Guile,所以我无法测试,但在Scheme let
中不保证任何评估顺序。所以我最好的猜测是count
包含第二行,l
包含第一行。
尝试使用let*
代替let
:
(define (read-two-lines)
(let* ((count (read-line))
(l (read-line)))
(show l)))
有关更详尽的说明,请参阅here。