そのため、int と 1 日 (以下の私の日型) を取り、指定された日の n 日先の日を返す関数を構築しようとしています。
私はタイプ日を次のように定義しています
type day = Sun | Mon | Tues | Wed | Thurs | Fri | Sat;;
次の日に返す関数:
let next (d:day) : day =
match d with
Mon -> Tues;
| Tues -> Wed;
| Wed -> Thurs;
| Thurs -> Fri;
| Fri -> Sat;
| Sat -> Sun;
| Sun -> Mon;
;;
上記の関数を構築しようとしています. n 日先になるまで日を増やし続けるには、next を再帰的に呼び出す必要があると考えていますが、OCaml でこれを定義する方法に完全に困惑しています. 私はいくつかのことを定義しようとしましたが、これまでのところ、次のような同じことを行う関数しか作成していません:
let rec ndays (n:int) (d:day) : day =
if n=0 then next d else ndays (pred n) d;;
これは近い気がしますが、私たち全員が知っているように、馬蹄形と手榴弾でのみ閉じることがカウントされます. どうすれば進められるかについてのヒントはありますか?