【发布时间】:2015-05-07 05:05:52
【问题描述】:
我基本上是Scheme的新手,这是我第二次尝试解决某个问题。
所以我要做的基本上是将我们传递给函数的每个参数与一个适当的值相加 例如:
(sum 3 1 2 0 2) ;would return 228
这是我的代码:
(define (sum one five ten twenty fifty hundred)
(+ (* 1 one)(* 5 five) (* 10 ten) (* twenty 20) (* 50 fifty) (* 100 hundred))
我认为一个可能的解决方案是使用 lambda 函数,但我不知道如何实现它。
【问题讨论】:
-
1.不要使用逗号分隔函数调用的参数。你使用空格。 2. 您缺少
twenty或fifty参数。因此,您的函数调用应该是(sum 3 1 2 0 0 2)。 -
@ChrisJester-Young 已编辑和更正。
-
我的第二点还没有更正。你的函数有 6 个参数,但你只传递了 5 个参数。
-
@ChrisJester-Young 我可以跳过我不想使用的参数吗?有什么方法可以传递 5 个参数而不是像我一样传递 6 个参数?
-
在您的具体情况下,您确实应该让您的函数采用关键字(命名)参数。让我写一个答案来演示这个概念。
标签: function lambda functional-programming scheme