我剛剛開始OCaml(和函數式編程),我試着編寫一個函數來計算數組(tab)中出現「value」的次數。 我想:OCaml在過濾器上的語法錯誤
let rec count_occ tab value =
let rec count_rec idx time = function
| tab.length - 1 -> time
| _ when tab.(indice) == value-> count_rec (idx + 1) (time + 1)
| _ -> count_rec (indice + 1) time
in
count_rec 0 0
;;
不幸的是,它不會因爲語法錯誤的編譯,我沒有找到解決辦法。
謝謝,我在正確的道路,現在,我的代碼來看:http://pastie.org/8746861但它並沒有真正的工作 – Epitouille
當你使用|匹配idx時您正在創建'idx'到'n'的新綁定,而不是測試'n'的內容是否等於'idx'。相反,這是在警衛中完成的。匹配是結構性的,如分解列表和元組並匹配變體和常量。 – nlucaroni
一旦你解決了這個問題,你應該立即注意到在這種情況下匹配不合適 - 在這三種情況下你都會與'_'匹配。改用if語句。 – nlucaroni