ML中的模式匹配除了int之外的其他东西

时间:2014-05-01 18:11:01

标签: pattern-matching ml

我在ML中有这个功能:

fun repeat(x,n:int)=
        if n<=0 then []
        else x::repeat(x,n-1)
    |repeat (x,_)=[];   

现在,如果第二个参数(n)不是int,我需要第二个重复。但我得到一个&#34;匹配冗余&#34;它的错误。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

ML是一种打字语言。您的显式类型注释确定函数的第二个参数具有类型int(实际上已经通过与0的比较隐式确定,因此注释是多余的)。显然,除了要匹配的整数之外,没有任何东西可以匹配,类型系统也知道它。

(编辑:文体说明:如果是Domain,最好抛出异常(例如预定义的n < 0),而不是默默地返回随机默认结果。)