2014-01-25 42 views
2

我想檢查,如果在列表中的所有產品都超過限度莫斯科ML模式匹配

fun search([], _) = true 
    | search(x1::xs, limit) = #2(#1 x1) > limit andalso search(xs, limit)` 

,我收到unresolve記錄圖形。我的功能有什麼問題。

回答

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), _)::xs, l) = x > l andalso search (xs, l); 
裏面的元組 x