1
因此,我正在构建一个函数,它需要一个int和一天(我的日子类型在下面)并返回给定日期前n天。函数返回给定日前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天,但我完全难以理解如何在OCaml中定义这一点。我试图定义一些东西,但迄今只创造了不作为下一个同样的事情的功能,如:
let rec ndays (n:int) (d:day) : day =
if n=0 then next d else ndays (pred n) d;;
我觉得这是接近,但我们都知道,靠近仅在计数马蹄铁和手榴弹。有没有人有关于我可以如何继续的提示?
哦,对不起,我的一个副本更名而不是其他,让我修改! – Bizzle 2013-03-11 21:41:07
酒吧只是表示d可能是不同的东西吧?我们可以修改它吗,这样初始函数需要一个int和一天吗?如let next_n(n:int)(d:day):day = ..... – Bizzle 2013-03-11 21:46:59
是的,你可以。在我们的例子中,'function'只是一个简短的语法,用于参数'n:int',并立即对它进行匹配。你可以重写我的例子来阅读:'让rec next_n d n =与...匹配n',这将是等价的。另请注意,类型注释不是必需的。 OCaml会推断他们。 – rgrinberg 2013-03-11 21:48:00