【发布时间】:2018-07-29 05:59:32
【问题描述】:
我编写了一个程序,它接受列表中的整数并将它们相加。现在我正在尝试再次编写此函数,但改用 int 选项整数。
我改变了我原来的功能
fun fold f base [] = base
| fold f base (x::rest) = f x (fold f base rest);
fun add x y = x+y;
fun sumList L = fold add 0 L;
到
fun fold2 f base [] = SOME(base)
| fold2 f base (x::rest) = f (SOME x) (fold2 f base rest);
fun add2 x y = SOME (x + y);
fun sumList2 L = fold2 add2 NONE L;
add 和 fold2 函数都可以编译,但是当我尝试运行 sumList2 的变体时,我得到操作数不同意错误。
【问题讨论】:
标签: polymorphism sml fold