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