1

コンピュータープログラムの構造と解釈MITビデオ講義シリーズを読んでいますが、関数から副作用を返すことについて簡単な質問がありました。

ビデオ3Aで、教授はこれに似た簡単な方程式を書きますfor-each

(define (for-each p l)
   (if (null? l)
      "done"
      (p (car l)
         (for-each p (cdr l)))))

Schemeの関数から副作用を返すための特定の規則はありますか、それとも"done"任意の選択でしたか?

4

1 に答える 1

2

これは実際には副作用ではありませんが、すべてのScheme関数が何かを返さなければならないということです。文字列"done"は何かです。通常、電話をかけるときfor-eachは、次のようなことをします。

(for-each (lambda (x) (display x)) lst)

からの戻り値は無視してfor-eachください。作成者は、ベースケースから返す他の値を同じように簡単に選択できます。

于 2012-09-29T21:47:45.623 に答える