【发布时间】:2015-05-19 05:00:32
【问题描述】:
我被这个 SML 作业困住了。我正在尝试创建一个复合函数(有趣的复合 n f)。它应该将函数 f 应用于自身 n 次,例如,化合物 3 f 将等于 f(f(f(x)))。除了 n 为零的情况外,我让它工作。我问过教授,但他不会直接告诉我答案。他试图给我一个提示“什么是函数乘以零?”我还是想不通。 stackoverflow可以解决吗?
谢谢。
我的代码:
fun compound n f =
if n < 2 then
if n = 0 then fn x => f x else fn x => f x
else fn x => f(compound (n-1) f(x));
示例:
val fnc = fn x => x + 1; (* example function to be used *)
compound 5 fnc(10); (* will return 15 which is correct*)
compound 0 fnc(10); (* returns 11, should be 10 *)
答案:
fun compound n f =
if n < 2 then
if n = 0 then fn x => x else fn x => f x
else fn x => f(compound (n-1) f(x));
【问题讨论】:
-
if n = 0 then fn x => f x else fn x => f x似乎是一个错字;两个分支是一样的(都是fn x => f x)。 -
我就这样离开了,所以 SML 不要向我抛出丑陋的错误。
标签: sml