apply-all
関数のリストと数値が渡され、その数値に適用されたときに関数の値のリストが生成される関数を作成しようとしています。
例えば、
(apply-all (list sqrt square cube) 4) => (2 16 64))
すべての関数が以前に定義されていると仮定します
私は各関数を別々に書く方法とそれがどのように機能するかを知っていますが、これを実行して渡される関数を処理する方法について少し混乱しています
関数リストをトラバースし、関数ごとに、それを数値パラメーターに適用する必要があります。これを行う最も簡単な方法は、次のmap
手順を使用することです。
(define (apply-all flist num)
(map (lambda (f) (f num))
flist))
(apply-all (list sqrt square cube) 4)
=> '(2 16 64)
これが私が好きなことをする方法ですfor/list
:
(define (apply-all fs n)
(for/list ([f fs])
(f n)))
(define (apply-all fs n)
(cond
((null? fs) fs)
(else (cons ((car fs) n) (apply-all ??? ???)))))
これが課題だった場合、おそらくあなたが書くことになっていたものです。