Lisp Scheme能否将列表扩展为参数?

Lisp Scheme能否将列表扩展为参数?,lisp,scheme,Lisp,Scheme,考虑到我有一个过程(加上x y),它只需要两个参数。现在我还有一个列表,它包含两个对象,比如(列表12)。因此,如果有任何神奇的方法将列表扩展为两个参数。我们有一个点概念版本,但那不是我想要的。我只想扩展列表,让Scheme相信我传递了两个参数,而不是一个列表 希望这些Ruby代码能够帮助: a = [1, 2] def plus(x,y); x+y; end plus(*a) # See that a is an array and the plus method requires # ex

考虑到我有一个过程
(加上x y)
,它只需要两个参数。现在我还有一个列表,它包含两个对象,比如
(列表12)
。因此,如果有任何神奇的方法将列表扩展为两个参数。我们有一个点概念版本,但那不是我想要的。我只想扩展列表,让Scheme相信我传递了两个参数,而不是一个列表

希望这些Ruby代码能够帮助:

a = [1, 2]
def plus(x,y); x+y; end

plus(*a)
# See that a is an array and the plus method requires
# exactly two arguments, so we use a star operator to
# expand the a as arguments

这是方案的等效代码:

(define (plus x y)
  (+ x y))

(plus 1 2)
=> 3

(define a (list 1 2))
(apply plus a)
 => 3

展开列表并将其作为参数传递给过程的“神奇”方法是使用
apply
。阅读更多关于您口译员的信息。

可能重复的,请记住您也可以使用apply。例如,您可以(应用地图列表列表)而不是(应用地图列表列表列表)
(define (plus x y)
  (+ x y))

(plus 1 2)
=> 3

(define a (list 1 2))
(apply plus a)
 => 3