【发布时间】:2013-02-27 05:49:40
【问题描述】:
所以我希望构建一个函数,该函数需要一个 int 和一个 day(下面是我的 day 类型)并返回给定日期前 n 天的日期。
我将类型 day 定义为
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 中定义它.我试图定义一些东西,但到目前为止只创建了一个与 next 执行相同操作的函数,例如:
let rec ndays (n:int) (d:day) : day =
if n=0 then next d else ndays (pred n) d;;
我觉得这很接近,但众所周知,接近只算马蹄铁和手榴弹。有人对我如何进行操作有任何提示吗?
【问题讨论】:
标签: function recursion functional-programming ocaml