Мне определили данные как и следующие:
import Data.Time.Clock
data D = D { ...,
someDate :: UTCTime,
... }
deriving (Eq, Show)
Когда я компилирую его, я добираюсь и следующие ошибка:
No instance for (Show UTCTime)
arising from the 'deriving' clause of a data type declaration
at ...
У меня уже есть время 1.1.3 пакета, которые должны уже иметь этот экземпляр согласно документации. Моя версия GHC 6.8.2.
Не импортируйте каждую часть пакета Data.Time
отдельно. Он разработан для того, чтобы вы импортировали только Data.Time
, и это влечет практически все, что обычно используется.
Включая экземпляр Show
для UTCTime
.
Если вам не нужен такой беспорядок в пространстве имен, импортируйте только те символы, которые вам нужны:
import Data.Time (UTCTime, getCurrentTime)
или что-то еще. В любом случае это хорошая идея - она защищает вас от конфликтов имен. позже, если библиотека обновится и начнет использовать имя, которое у вас уже есть определенный.
Документация лжет. Если вы посмотрите на источник Data.Time.Clock.UTC
, то для UTCTime
просто не существует экземпляра Show
.
Редактировать:
Как услужливо указал newacct, есть потерянный экземпляр для Show UTCTime
в Data.Time.LocalTime.LocalTime
, поэтому, если вы импортируете это, ваш код буду работать.