-1
我有一個類型爲(string*int) list
的OCaml列表。 我必須遍歷列表並檢查值int
。如果對於我列表中的所有元素,屬性int>=0
成立,那麼列表是「很好」,否則,如果在任何一個實例中失敗,那麼我必須返回「失敗」。 對於這一點,我做了以下嘗試OCaml中的模式匹配
let rec check tlist = match tlist with
[] -> print_string "finished"
|(s,i)::tail -> if i < 0 then print_string "fail" else check tail
從解釋運行此,我收到一條警告,模式匹配並不詳盡。 此外,當我在下面的輸入類型
let z = [("ask",1);("tell",2);("three",3);("goal",-4)] ;;
運行它,它返回預期失敗,但對於
let z = [("ask",1);("tell",2);("three",3);("goal",4)] ;; ,
返回例外:
Match_failure ("//toplevel//", 7, -22).
如何去這個問題?
編輯:此外,還有另一部分的問題。我必須確保字符串s
不在列表中重複。如何去做呢?
你確定會引發異常嗎?對我來說它不是 – Kakadu 2013-03-09 12:22:02
它對我來說確實! – alpha42 2013-03-09 13:27:03
請更新您的問題與觸發異常的OCaml會話的抄本。 – didierc 2013-03-09 17:26:50