【问题标题】:How are functions defined in Scheme?Scheme中的函数是如何定义的?
【发布时间】:2023-03-25 02:28:02
【问题描述】:

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

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

现在就我而言,+ 是函数名称,values 1,1 是函数的参数。秒的情况也一样。 Lambda 是一种在 Scheme 中编写函数的方法,不是吗?所以我想这也一定是一个函数。

我的解决方案说两者都不是函数而是值! 是我做错了什么还是我的解决方案有问题?

【问题讨论】:

  • 你能发布作业的确切措辞吗?
  • 我真的很想,但是因为它是德语的,而且我的英语很糟糕,我认为这可能会引起误解。但我会尝试编辑它。
  • 如果您用德语发布,我可以为您翻译成英语。
  • 德语任务:“Die nachfolgend in Scheme-Notation definierten Werte sind teilweise Funktionen. Bestimmen Sie den Wert, fall es sich nicht um eine Funktion handelt. Bestimmen Sie andernfalls, was die Funktion berechnet。”
  • 我不懂德语,但问题本身的英文解释似乎完全合理,并且与给出的答案一致:我同意这两个表达式都定义了非函数值。

标签: function lambda functional-programming scheme


【解决方案1】:

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

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

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


1 看起来像这样:

(define res3 (lambda (i) (* wert1 i)))

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

【讨论】:

  • 非常感谢您不仅回答了问题而且还玩了翻译!完美解释,我会尝试在其他定义的值上使用它,如果我还有问题,我会回来的!现在,谢谢vm先生!
  • 准确地说,+res3 是计算函数的变量,而 resres2 也是计算其他值的变量。 Scheme 中的函数名只是变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多