2

我正在学习 Scheme 并想编写一个递归过程,在每个运行级别输出到控制台:

(define (dummy count)
    (if (= 0 count)        
        (runtime)
        ((display "test" console-i/o-port) (dummy (- count 1)))))

然后测试:

(dummy 10)

但似乎只有最后一个调用过程的输出才会被打印出来。我应该怎么做才能让它发生?谢谢。(我正在使用 Mit-scheme)

4

2 回答 2

2

If what you want to do is displaying "test" count number of times (10 in the example) you can do something like this (assuming that count is positive):

(define (dummy count)
  (if (> count 0)
      (begin 
        (display "test" console-i/o-port)
        (dummy (- count 1)))))
于 2011-12-27T17:05:37.253 回答
2
((display "test" console-i/o-port) (dummy (- count 1)))

这是一个函数调用,其中(display "test" console-i/o-port)应该调用的函数是该函数(dummy (- count 1))的参数。由于 `(display "test" console-i/o-port) 实际上并没有返回函数,这将导致错误(在打印 test 之后)。

要执行您真正想做的事情(先执行(display ...)然后执行(dummy ...)),您可以使用如下begin形式:

(begin (display "test" console-i/o-port) (dummy (- count 1)))
于 2011-12-27T16:55:32.697 回答