我已經創建了一個返回只包含偶數索引列表的功能,如下圖所示:爲什麼會產生價值限制例外?
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