我已经创建了一个返回只包含偶数索引列表的功能,如下图所示:为什么会产生价值限制例外?
let rec removeOddIdx xs =
match xs with
|[] -> []
|h::t -> (if t.Length % 2 = 0 then
[h]@removeOddIdx t
else
removeOddIdx t)
它正常工作时,我把它叫做:
removeOddIdx [1;2;3;];;
然而,当我把它用空列表:
removeOddIdx [];;
我得到一个Value Restriction异常 - 怎么回事?
我读过价值限制,但我不明白为什么发生在我的情况。
这里是精确的错误消息:
Testing.fs(13,1):错误FS0030:值限制。值
'it'
已经被推断为有通用型
val it : '_a list
要么定义
'it'
一个简单的数据来看,使它成为一个功能有明确的参数,或者,如果你不为她打算是通用的,添加一个类型注释。
嗯,我试过了,但我没有得到任何异常,编译器错误或警告。 –
这很奇怪。每次运行它时,我都会收到错误(使用错误文本更新了线程)。 – user3665877