我在SML中有兩個列表,可以說列表A [(a,b,c),(d,e,f)]
和列表B [b,e]
。我想算在B中每個三元的第二個元素匹配A.每個項目的多少發生輸出應該是2,由於b
和e
各A.在SML中對多個列表進行迭代
這是到目前爲止我的代碼發生一次,但當我從B中的一個元素移動到另一個元素時,我的計數器始終設置爲0.我知道在Java中,這只是一個簡單的double for循環。
fun number_in_months (d : (int * int * int) list, m : (int) list) =
if null m then 0
else if null d then number_in_months(d, tl m)
else if (#2(hd d)) = (hd m) then 1 + number_in_months (tl d, m)
else number_in_months(tl d, m)
您真的不想使用模式匹配,而是使用'null'對空列表進行測試。這樣你就不需要明確地將列表的首尾相連,因爲你已經將它們模式匹配到了例如(x :: xs)和(y :: ys) –