如何在Scheme中定义函数?

时间:2018-03-19 21:27:42

标签: function lambda functional-programming scheme

根据我的任务,下面在Scheme-notation中定义的一些值是函数。如果它不是一个函数,我需要确定它的值。否则,我必须确定函数计算的内容。:

First:  (define res  (+ 1 1))
Second: (define res2 ((lambda (i) (* wert1 i)) 2))

就我而言,+是函数名称,values 1,1是函数的参数。秒的情况相同。 Lambda是一种在Scheme中编写函数的方法,不是吗?所以我认为这也必须是一个功能。

我的解决方案说既不是功能,也是价值! 我有什么问题或者我的解决方案有问题吗?

1 个答案:

答案 0 :(得分:1)

你是+(lambda (i) ...)是函数。然而,这不是问题。问题是定义的值(即resres2)是否是函数。

res被定义为等于(+ 1 1),它使用参数1 1调用+函数(正如您所说)。这样做的结果是2。因此res等于2,这是一个数字,而不是函数。

res2的定义也是如此:(lambda (i) (* wert1 i))是一个函数。但是你没有将res2定义为等于(lambda (i) (* wert1 i)) 1 ,你将它定义为等于将该函数应用于参数{{1}的结果}}。所以你应该回答将该函数应用于该参数的结果是什么。

1 这看起来像这样:

2

在这种情况下,“res3是一个函数”将是正确的答案。