【发布时间】:2013-04-05 13:49:05
【问题描述】:
我有 -> 类型 week = MON |周二 | WED……我想明天创建第二天返回的函数!例如,如果我调用“明天 MON”,该函数将返回 TUE。
【问题讨论】:
我有 -> 类型 week = MON |周二 | WED……我想明天创建第二天返回的函数!例如,如果我调用“明天 MON”,该函数将返回 TUE。
【问题讨论】:
没有允许您执行此操作的内置语言结构。所以你应该自己写函数:
let tomorrow = function
| MON -> TUE
| TUE -> WED
...
另一种可能是实现这些功能:
val int_of_week: week -> int
val week_of_int: int -> week
碰巧用 Obj.magic 编写这些函数很简单。他们将允许您在明天实施:
let tomorrow w =
week_of_int ((int_of_week w + 1) mod 7)
这可能更接近您的想法。
但这种解决方案不太安全:
【讨论】:
与 Haskell 不同,你不能只做 deriving(Ord) 并调用 succ/pred
您将不得不手动编写这些函数。例如
let tomorrow = function
| MON -> TUE
| TUE -> WED
| (* etc.. *)
【讨论】: