可変長の引数のリストを取る関数があります。その長さに応じて、別の関数を呼び出す必要がありますが、引数の長さが異なります。以下の関数が表示されます。
(define (set-contents . args)
(define columns-length (length args))
(cond
((= columns-length 1)
(send output-list set (empty-list rows-length) (get-nth-item columns-as-list 0)))
((= columns-length 2)
(send output-list set (empty-list rows-length) (get-nth-item columns-as-list 0) (get-nth-item columns-as-list 1)))
((= columns-length 3)
(send output-list set (empty-list rows-length) (get-nth-item columns-as-list 0) (get-nth-item columns-as-list 1) (get-nth-item columns-as-list 2)))
((= columns-length 4)
(send output-list set (empty-list rows-length) (get-nth-item columns-as-list 0) (get-nth-item columns-as-list 1) (get-nth-item columns-as-list 2) (get-nth-item columns-as-list 3)))
この条件句はさらに長くなる可能性があります。それは機能していますが、まったく適切ではありません。
この関数を埋めるためのより良い方法はありますか?