2
fun sample(list_of_str_lists, s) =
case list_of_str_lists of
[] => []
| x::[] => case (all_except_option(s, x)) of
SOME lst => lst
| NONE => []
| x::xs' => case (all_except_option(s, x)) of
SOME lst => lst @ sample(xs', s)
| NONE => [] @ sample(xs', s)
它使用一個輔助函數,它接受一個字符串列表,並返回該列表中的所有元素在list option
如果有匹配該列表中的字符串(再次排除匹配的字符串)。因此,幫助函數將採用列表["a", "b", "c"]
和字符串"a"
,如果它匹配"a"
,將返回包含["b", 「c」]
的選項。SML模式匹配拋「類型的規則不同意[tycon不匹配]」錯誤
我的問題是在sample
在最後的模式匹配分支。它引發錯誤
earlier rule(s): 'Z list option -> 'Z list
this rule: string list list -> string list
in rule:
:: (x,xs') =>
(case (all_except_option (s,x))
of SOME lst => lst @ sample <exp>
| NONE => nil @ sample <exp>
,但我不明白爲什麼,因爲該模式我想匹配SOME lst
電話,但它描述爲string list list
。這是怎麼回事?
這工作 - 謝謝你! – JoshieSimmons 2014-11-04 19:29:37