无法为包含UTCTime的数据派生Show实例

时间:2010-07-11 15:32:02

标签: haskell

我的数据定义类似于ff。:

import Data.Time.Clock

data D = D { ...,
             someDate :: UTCTime,
             ... }
         deriving (Eq, Show)

当我编译它时,我得到了ff。错误:

No instance for (Show UTCTime)
  arising from the 'deriving' clause of a data type declaration
               at ...

我已经拥有time-1.1.3软件包,该软件包应根据documentation已有此实例。我的GHC版本是6.8.2。

2 个答案:

答案 0 :(得分:28)

请勿单独导入Data.Time套件的每个部分。它专为您导入Data.Time而设计,它将引入常用的所有内容。 包括Show的{​​{1}}个实例。

如果您不想要那么多名称空间混乱,请只导入您需要的符号:

UTCTime

或其他任何东西。无论如何这是一个好主意 - 它可以保护你免受姓名冲突 稍后如果库得到更新并开始使用您已经拥有的名称 定义

答案 1 :(得分:3)

文档在于。如果您查看Data.Time.Clock.UTC的来源,Show就没有UTCTime个实例。

编辑:

正如newacct有用地指出的那样,Show UTCTime中有一个Data.Time.LocalTime.LocalTime的孤立实例,所以如果你导入它,你的代码就可以了。