1

所以我正在寻找一个函数,它需要一个 int 和一天(下面是我的一天类型)并返回给定日期前 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;
;; 

我正在寻找如上所述构建一个函数,我认为它需要对 next 进行递归调用以不断增加这一天,直到它提前 n 天,但我完全不知道如何在 OCaml 中定义它。我试图定义一些东西,但到目前为止只创建了一个与下一个功能相同的函数,例如:

let rec ndays (n:int) (d:day) : day =
  if n=0 then next d else ndays (pred n) d;;

我觉得这很接近,但众所周知,接近只有马蹄铁和手榴弹才算。有人对我如何进行有任何提示吗?

4

1 回答 1

4

首先,您的代码中的 f7 是什么。事实上,fn 符号应该是什么意思?

如果我理解正确,您正在寻找这样的功能:

let rec next_n d = function
  | 0 -> d
  | n -> next_n (next d) (pred n)
# next_n : day -> int -> day 
于 2013-03-11T21:40:13.970 回答