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