Это скорее стилистический вопрос, чем что-либо еще. Учитывая следующий фрагмент кода:
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
Есть ли способ разрешить ошибку types of rules don't agree
, вызванную попыткой сопоставить соответствие e11 с p2, кроме включения выражения p1 в скобки? У p2-шаблона есть другой аргумент case, чтобы избежать ответа "просто переключить шаблоны", -).
update: изменил код, чтобы отразить более конкретный случай