如何将列表中的每一项应用为 Scheme 中函数的相应参数

How to apply each item of the list as the corresponding argument for a function in Scheme

我有一个列表 (1 2 3) 需要应用于函数 (f a b c)。

问题的第一部分是合并两个列表以创建上面的列表,现在我需要将这些数字作为参数插入。我不知道该怎么做。我正在考虑使用 apply 或 map,但我对它们的工作方式或它们是否是正确的方法没有信心。

谢谢。

您正在寻找的程序apply:

(+ 1 2 3) ; ==> 6

(let ((lst '(1 2 3)))
  (apply + lst)) ; ==> 6

Apply 还可以在列表之前采用其他参数.. 例如。

(let ((lst '(1 2 3)))
  (apply + 2 lst)) ; ==> 8, same as (+ 2 1 2 3)

也知道Scheme中的+只是一个变量。它也可以绑定在您的 let 中:

(let ((lst '(1 2 3))
      (+ (lambda args (apply * args))))
  (apply + 2 lst)) ; ==> 12, same as (* 2 1 2 3)

假设您想对同一组数据执行多项操作.. 例如。将 x、y、an 应用于此列表的结果是什么:

(let ((lst '(4 3 2))
      (procs (list + - * /)))
  (map (lambda (proc)
         (apply proc lst))
       procs))

; ==> (9 -1 24 2/3), same as (list (apply + lst) (apply - lst) ...)