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。这里发生了什么事?
发布于 2014-01-23 21:33:26
我没有安装Guile,所以我不能测试它,但是在Scheme中,let并不保证任何评估顺序。因此,我最好的猜测是,count包含第二行,l包含第一行。
尝试使用let*而不是let
(define (read-two-lines)
(let* ((count (read-line))
(l (read-line)))
(show l)))有关更详细的解释,请参见这里。
https://stackoverflow.com/questions/21318625
复制相似问题