タイプの OCaml リストがあり(string*int) list
ます。リストをたどってint
値を確認する必要があります。リスト内のすべての要素に対してプロパティint>=0
が保持されている場合、リストは「正常」であり、それ以外の場合、いずれかのインスタンスで失敗した場合は「失敗」を返す必要があります。このために、私は次の試みをしました
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
が繰り返されないようにする必要があります。それについてどうやって行くのですか?