-1

この手順を呼び出すときのスキーム(私はラケットR5RSを使用しています)

(map display '(1 2 3 4 5))

戻ります

12345(#<void> #<void> #<void> #<void> #<void>)

何故ですか?虚空はどうした?

4

3 に答える 3

0

mapリストの各要素に対する関数の各呼び出しの結果を収集し、これらの結果のリストを返します。

display未指定の値を返します。#<void>ラケットが使用しているものです。42 も返された可能性があります。

おそらくタイプミスがあります。返すべきだった

12345(#<void> #<void> #<void> #<void> #<void>)

先頭の開き括弧なし。つまり、5 つの値が表示され、次に戻り値が表示されます。

于 2013-05-30T12:24:56.043 に答える
0

for-eachあなたの場合、代わりに,を使用する必要がありmapます。for-eachとは異なり、非回収mapです。

また、for-eachリスト項目を左から右に関数に渡すことが保証されています。mapそのような保証はなく、任意の順序でリスト項目を渡すことが許可されています。(ただし、Racket の特定のケースではmap、左から右の順序を使用します。ただし、他の Scheme 実装ではこれに依存することはできません。右から左の順序を使用するものもあり、理論的には、他の順序が可能です。)

于 2013-05-30T13:46:28.293 に答える