SML匹配表达式中的模式应该具有相同的类型吗?

问题描述 投票:0回答:1

在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表达式中的模式也应该具有相同的类型吗? (我想是的,因为函数的参数具有类型,并且我们不能将不同类型的参数赋予相同的参数。)

谢谢。

functional-programming pattern-matching programming-languages sml ml
1个回答
0
投票
是的,就像表达式一样,模式也有类型。并且匹配中不同模式的类型必须相同。
© www.soinside.com 2019 - 2024. All rights reserved.