2

uptolike を呼び出すと(upto 1 10)list が生成されるプロシージャがあるとします'(1 2 3 4 5 6 7 8 9 10)

lcm このリストを、単一のリストではなく複数の引数をとるような関数の引数として使用したい場合、(lcm 1 2 3 4 5 6 7 8 9 10)これを行う方法はありますか?

4

3 に答える 3

4

apply を使用します。

(apply lcm (upto 1 10))

「適用」は、引数のリストに関数を適用します。

于 2013-01-23T15:59:43.583 に答える
0

evalを使用してこれを行う方法の1つは、次のとおりです。

(eval(cons'lcm(up to 1 10)))

于 2013-01-23T16:02:08.283 に答える
0

MIT-Scheme (他は不明) では、関数定義でドットを使用できます。

(define (func-with-multiple-args . args)
  (let loop ((args args))
    (if (null? args)
      'done
      (begin (display (car args)) (loop (cdr args))))))

で呼び出す

(func-with-multiple-args 1 2 3 4)

仕事をします。引数がリストに入れられることに注意してください。

興味深い事実: `list' プロシージャは実際には MIT-Scheme の「ランタイム」ソースの list.scm で次のように定義されています。

(define (list . args)
 args)
于 2013-01-23T20:23:41.580 に答える