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
((display "test" console-i/o-port) (dummy (- count 1)))

これは関数呼び出しです。ここ(display "test" console-i/o-port)で、は呼び出されるはずの関数であり、はその関数(dummy (- count 1))の引数です。`(display" test "console-i / o-port)は実際には関数を返さないため、これによりエラーが発生します(印刷テスト後)。

実際にやりたいこと(最初に実行(display ...)してから実行する(dummy ...))を実行するには、次のbeginようなフォームを使用できます。

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

「テスト」countを何度も表示する場合(例では10回)、次のように実行できます(count正の場合)。

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