Ocaml でのパターン マッチングに関して少し問題があります。
基本的に、リストを受け取り、それが逆順かどうかをチェックする reversed という名前の関数を作成する必要があります。
ここのところ:
let rec reversed (x:int list):bool =
match x with
| [] -> true
| y::z::tl -> if y < z then false else reversed tl;
| y::[] -> true;;
できます!(実際には驚いたことに:P)しかし、私が見ることができる欠陥があります。つまり、tlがこれ以上ない場合、一致しません。これをテストすると、true が返されます。
reversed [5;4;3;1;2];;
テールがなくなり、単純に y::[] に一致するため、これは完全に理解できます。
どうすればこれを修正できますか?
PS: 今日は Ocaml との最初の日です。質問が非常に簡単な場合は申し訳ありません:D
PPS: 意図的に Core のみを使用しています。(モジュールなし)
PPPS: 私が根本的に間違ったことをしている場合は理解しています。それを指摘してください。