2

3 つの引数を取り、それらすべてを 2 倍にしたリストを返すプロシージャ foo があるとします。

(define  (foo a b c)
  (list (* 2 a ) (* 2 b) (* 2 c)))

私ができるようにしたいのは、次のように、リストを受け入れ、リスト要素を引数として使用して foo を呼び出す別のプロシージャを作成することです。

(define (fooInterface myList)
  ...)

(fooInterface (list 1 2 3))

キャッチは、fooが常に3つの引数を持つと仮定して、fooInterfaceを書きたくないということです。つまり、foo に追加の引数を追加しても、渡されたリストに 3 つの要素があれば、fooInterface は引き続き機能するはずです。

4

3 に答える 3

11

あなたが探しているのは と呼ばれるものapplyです。

于 2010-06-01T19:06:00.693 に答える
0

map はどうですか、それは別のプロシージャ定義で機能しますか?

(define foo2

(lambda (x)
  (* x 2)))

(map foo2 '(1 2 3 4 5))
于 2011-02-20T10:18:03.187 に答える