对于ML风格的编程语言,如何确定给定模式是否"良好",特别是它是否详尽且不重叠?
假设您有以下模式:
match lst with
x :: y :: [] -> ...
[] -> ...
Run Code Online (Sandbox Code Playgroud)
要么:
match lst with
x :: xs -> ...
x :: [] -> ...
[] -> ...
Run Code Online (Sandbox Code Playgroud)
一个好的类型检查器会警告第一个不是详尽的,第二个是重叠的.对于任意数据类型,类型检查器如何做出一般性的决策?