我想检查一下,如果列表中的所有产品都超出限制
fun search([], _) = true
| search(x1::xs, limit) = #2(#1 x1) > limit andalso search(xs, limit)`
我收到了unresolve记录模式。我的功能有什么不对。
答案 0 :(得分:1)
您的函数问题很可能是您使用的#1
和#2
分别用于从给定元组中提取第一个和第二个组件。这应该适用于任何元组,即对,三元组,四元组等。例如,
> #1 (1, 2);
val it = 1: int
和
> #1 ("a", "b", "c", "d");
val it = "a": string
在你的函数中,编译器(或解释器)无法弄清楚元组x1
应该有多少组件。
您可以通过提供类似
的显式类型注释来提供帮助fun search ([], _) = true
| search ((x:(int*int)*int)::xs, l) = #2 (#1 x) > l andalso search (xs, l);
或(可能更好)明确拆分模式中的元组x
fun search ([], _) = true
| search (((_, x), _)::xs, l) = x > l andalso search (xs, l);