【发布时间】:2014-06-22 01:52:58
【问题描述】:
我有一个枚举和一个函数来调用枚举的下一个元素。
data Day = Mon | Tue | Wed | Thu | Fri | Sat | Sun
next :: Day -> Day
next Mon = Tue
next Tue = Wed
next Wed = Thu
next Thu = Fri
next Fri = Sat
next Sat = Sun
next Sun = Mon
我尝试通过调用来使用它:
> next Mon
但编译器显示错误:
<interactive>:35:1:
No instance for (Show Day) arising from a use of `print'
Possible fix: add an instance declaration for (Show Day)
In a stmt of an interactive GHCi command: print it
我做错了什么?
【问题讨论】:
-
你的函数没问题,但你正在尝试打印结果,所以你应该添加
deriving (Show) at the end of your Day type declaration -
data Day = Mon | Tue | Wed | Thu | Fri | Sat | Sun deriving (Show)应该可以解决这个问题。