在Ullman的SML书中:
匹配表达式由一个或多个规则组成,它们是成对的表格
<pattern> => <expression>
规则由竖线分隔,因此匹配的形式为:
<pattern 1> => <expression 1> | <pattern 2> => <expression 2> | <pattern n> => <expression n>
=之后的每个表达式必须具有相同的类型,因为其中任何一个都可以成为匹配的值。
匹配表达式中的模式是表达式(因此它们具有类型)吗?
匹配表达式中的模式也应具有相同的类型吗?
尤其是当使用匹配表达式定义函数时,例如
val rec f = fn P1 => E1 | P2 => E2 | ... | Pn => En;
match表达式中的模式也应该具有相同的类型吗? (我想是的,因为函数的参数具有类型,并且我们不能将不同类型的参数赋予相同的参数。)
谢谢。