这是家庭作业的一部分,所以我的目标是了解为什么这是错误的。正如我之前提到的,我正在使用莫斯科ML。 fun filter pred = let
fun f ([], a) = []
| f ([], a) = a
| f (e::L, a) = if pred e then (f L (e::a)) else (f L a)
in
f
end
我得到的错误是: | f (e::L
我正在处理列表中所有值的排列函数。 这是我到目前为止有: //MY ROTATE FUNCTION
fun rotate e [] = [[e]]
| rotate e (x::xs)= (e::x::xs)::(List.map (fn l => x::l) (rotate e xs));
//MY CURRENT PERMUTATION FUNCTION
fun perm []
我仍然有这个问题,所以我可以去寻求更多的帮助。 我们给出: datatype which = STRING of string | INT of int
第1部分。我们被告知,我们需要创建一个名为whichTree包含类型的值二叉树其它数据类型“的”,其中数据仅在的叶子树。 我认为这将是正确的答案: datatype whichTree = Empty | Leaf of which | No
如何ML在下面的函数定义进行了类型推断: let add a b = a + b
是它喜欢在那里,直到模板实例化后的点没有进行类型检查C++模板如果该类型支持必要的操作,该函数可以工作,否则会引发编译错误? 即,例如,下面的函数模板 template <typename NumType>
NumType add(NumType a, NumType b) {
return a +
我有这样的代码: datatype 'a Tree = Empty | LEAF of 'a | NODE of ('a Tree) list;
val iL1a = LEAF 1;
val iL1b = LEAF 2;
val iL1c = LEAF 3;
val iL2a = NODE [iL1a, iL1b, iL1c];
val iL2b = NODE [iL1b, iL1c,