【发布时间】:2017-02-10 23:56:35
【问题描述】:
我怎样才能有多个不相互交错的 case 语句。 例如一个玩具示例:
fun multi_cases(xs) =
case xs of
[] => 5
| x::ys => case x of
1 => 2
|_ => 3
| x::[] => case x of
1 => 5
| _ => 7
;
stdIn:59.17-64.28 Error: types of rules don't agree [overload conflict]
earlier rule(s): [int ty] -> [int ty]
this rule: [int ty] list -> [int ty]
in rule:
:: (x,nil) =>
(case x
of 1 => 5
| _ => 7)
最后两个 case 语句混淆了我如何告诉 SML 它们确实是两个独立的 case 语句,而不是 case x of 1 => 2 的延续/单独分支 ...
以下答案中指出的上述模式存在通用性问题。
【问题讨论】:
标签: sml