在递归过程中显示输出端口 - Scheme

时间:2011-12-27 16:40:59

标签: recursion scheme mit-scheme

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

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

然后测试:

(dummy 10)

但似乎只打印出最后一个调用过程的输出。 我该怎么做才能实现呢?谢谢。 (我正在使用Mit-scheme)

2 个答案:

答案 0 :(得分:2)

((display "test" console-i/o-port) (dummy (- count 1)))

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

要执行您真正想要执行的操作(首先执行(display ...)然后执行(dummy ...)),您可以使用begin表格,如下所示:

(begin (display "test" console-i/o-port) (dummy (- count 1)))

答案 1 :(得分:2)

如果您想要做的是显示“test”count次(示例中为10次),您可以执行以下操作(假设count为正):

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