2010-04-12 74 views
1

我在Ocaml中編寫了一個遞歸函數,該函數應該計算整數列表中的項數(是的,我知道有一個List.length函數,但我試圖自己做)。然而,Ocaml編譯器/解釋器迫使我一直使用alpha列表。是否有可能只接受整數列表的Ocaml函數?

所以說錯了,當一個函數接受一個列表作爲參數時,該列表的類型必須始終爲alpha?由於

編輯:爲什麼它的不方便我使用阿爾法名單的原因是因爲我不能由於類型匹配的投訴

回答

6

易整數值阿爾法列表的頭比較:

let length (lst : int list) = ... 

我有點困惑,比較會讓你失望;與整數的比較應該將'a約束爲int。例如,在

let length lst = match lst with 
    | x :: xs when x = 0 -> ... 

lst將有類型int list

+0

可能需要添加'rec'。 – grettke 2010-04-12 15:40:39

+1

我只加註一次,因爲你沒有使用短語「主體類型」,而這種短語本來就是在上下文中,而且OCaml很久以前就留在了路邊。 – 2010-04-12 23:29:47

相關問題