如何定义一个在scheme中接受任意数量参数的函数?

时间:2014-05-11 21:10:15

标签: function parameters numbers scheme

我想定义一个函数,它接受一些可以更改的参数。

我认为我的函数应该将一个参数作为一个列表,然后解析它但它不起作用或我写错了。

调用函数会因belov而异。我想将函数定义为

(define function (lambda(list)(... 

然后在列表上工作,但它没有成功。谢谢

(function param1 '(2 3) '(3 1))

(function param1 '(2 3) '(3 2) '(1 5))

1 个答案:

答案 0 :(得分:1)

有一种语法,其中所有参数将自动放入列表中:

(define function
  (lambda lst ; no parentheses!
    lst))

或等效的

define (function . lst) ; mind the dot!
    lst)

然后

(function '(2 3) '(3 1))
=> '((2 3) (3 1))
(function '(2 3) '(3 2) '(1 5))
=> '((2 3) (3 2) (1 5))

在您的函数内部(在我的示例中,我只是返回列表),然后您可以使用高阶函数(mapfilter,...)处理列表,或者使用{{ 1}},first或类似。

您还可以先拥有多个固定参数,然后是变量部分,例如:

second