最も簡単:
(define (display-all . vs)
(for-each display vs))
-のfor-each
代わりに使用することは同じことですが、副作用のために関数を呼び出すだけであると想定しているため、結果のリストを返す代わりに ( withを使用すると s のリストが返されます)、単に void が返されることに注意してください。map
for-each
map
display
void
文字列以外のものを表示し、それらの間にスペースを入れたい場合、これは面倒になる可能性があります。 string を入力し、自分でスペースを追加します。リストの要素の間にスペースを追加する方が簡単です:
(define (insert-between v xs)
(cond ((null? xs) xs)
((null? (cdr xs)) xs)
(else (cons (car xs)
(cons v (insert-between v (cdr xs)))))))
(define (display-all . vs)
(for-each display (insert-between " " vs)))
これを呼び出す:
(display-all "blah" 4 "bloo")
あなたが期待することをします。スペースを自動的に挿入したくない場合は、区切りオブジェクトとして別の引数を指定し、必要に応じて使用できます。区切りオブジェクトを受け入れるバージョンは次のとおりです。
(define (display-all sep . vs)
(for-each display (insert-between sep vs)))
ただし、このアプローチは、オプションの引数とキーワード引数をサポートするスキームのバージョンではより意味があるため、デフォルトでスペースまたは空の文字列のいずれかに設定し、残りの引数に干渉しないようにすることができます。