【问题标题】:Writing a function in SML using another function使用另一个函数在 SML 中编写函数
【发布时间】:2015-09-24 04:56:11
【问题描述】:

我在 SML 中编写了一个函数 sumF,它执行以下操作:

fun inc x = x+1;
val inc = fn : int -> int
sumF inc 3;
9 : int (i.e. inc 3+inc 2+ inc 1+ 0)

总和

fun sumF f 0 = 0 |
sumF f n = f n + sumF f (n-1);

现在我想使用 sumF 编写一个函数 sumsq(平方和),但我无法做到。这就是我所做的。

fun sumsq 0 = 0 |
sumsq n = n*n + sumsq (n-1);
val sumsq = fn : int -> int
sumsq 3;  
val it = 14 : int

这是没有给我所需输出的代码:

fun sumF f 0 = 0 |
sumF f n = f n*n + sumF f (n-1);
val sumF = fn : (int -> int) -> int -> int
sumF sumsq 3;
val it = 53 : int // wrong output

【问题讨论】:

    标签: sml


    【解决方案1】:

    您的sumsq 函数已经提供了平方和,但它不是根据sumF 定义的。您的后一个代码不是这个(我假设的)家庭作业问题中所要求的,而且它没有意义,因为它现在计算平方和之和或类似的东西。

    你想要的是这样的:

    fun sumsq n = sumF ? n
    

    我让你来决定用什么来代替?

    【讨论】:

    • 感谢您的帮助,先生,一个小疑问 - 我应该在这里使用部分应用的概念吗? @AndreasRossberg
    • @rm4596,当然,如果你愿意,你可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多