我在ML中有这个功能:
fun repeat(x,n:int)=
if n<=0 then []
else x::repeat(x,n-1)
|repeat (x,_)=[];
现在,如果第二个参数(n)不是int,我需要第二个重复。但我得到一个&#34;匹配冗余&#34;它的错误。有人可以解释一下吗?
答案 0 :(得分:0)
ML是一种打字语言。您的显式类型注释确定函数的第二个参数具有类型int
(实际上已经通过与0的比较隐式确定,因此注释是多余的)。显然,除了要匹配的整数之外,没有任何东西可以匹配,类型系统也知道它。
(编辑:文体说明:如果是Domain
,最好抛出异常(例如预定义的n < 0
),而不是默默地返回随机默认结果。)