这更像是一个风格问题而不是其他任何问题.鉴于以下代码:
case e1 of (* datatype type_of_e1 = p1 | p2 *)
p1 => case e11 of (* datatype type_of_e11 = NONE | SOME int *)
NONE => expr11
| SOME v => expr12 v
| p2 => case e21 of (* datatype type_of_e21 = NONE | SOME string *)
NONE => expr21
| SOME v => expr22 v
Run Code Online (Sandbox Code Playgroud)
有没有办法解决types of rules don't agree因尝试将e11模式匹配到p2而导致的错误,而不是将p1的表达式括在括号中?在P2模式还有另外一个case语句,避免"只是切换模式"答案;-).
更新:更改代码以反映更具体的情况