Scheme - 没有名称的函数调用

时间:2016-04-08 19:28:16

标签: function lambda scheme racket

我正在使用DrRacket在方案中实现我的代码。我是这种语言的新手,我的作业需要一些帮助。我的老师要我从控制台调用一个函数,她不希望我用它的名字来调用它。

  

这是不允许的=> (函数名称'John(X p c f F g K :: 1 4))

使用这种表示法,我必须用名字来调用我的函数。

  

这就是她想要的=> ('John(X p c f F g K :: 1 4))

有没有办法定义一个没有名字的函数并调用它?我在互联网上搜索了很多,但找不到解决方案。

1 个答案:

答案 0 :(得分:3)

你的例子没有多大意义。第二个片段只是一个参数列表,在某个点你必须传递一个真实的过程。另一种选择是"调用一个没有名字的函数"将使用lambda表达式,这是一个匿名过程...例如,这个:

(define (square x)
  (* x x))

(square 4)
=> 16

等同于:

((lambda (x) (* x x)) 4) ; look ma, no name!
=> 16

您甚至可以根据lambda来定义递归过程,阅读有关Y-combinator的更多详细信息。

修改

阅读评论后 - 如果您只需要将参数列表传递给函数,请使用:

(apply function-name list-of-parameters)