Не удается получить экземпляр Show для данных, содержащих UTCTime
У меня есть данные, определенные как 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, который должен иметь этот экземпляр в соответствии с документацией. Моя версия GHC - 6.8.2.
Ответы
Ответ 1
Не импортируйте каждую часть пакета Data.Time
отдельно. Он предназначен для импорта только Data.Time
, и это приведет к почти всему, что обычно используется.
Включая экземпляр Show
для UTCTime
.
Если вы не хотите, чтобы много помех пространства имен, импортируйте только нужные символы:
import Data.Time (UTCTime, getCurrentTime)
или что-то еще. Это в любом случае хорошая идея - она защищает вас от конфликтов имен
позже, если библиотека обновится и начнет использовать имя, которое вы уже
определены.
Ответ 2
В документации. Если вы посмотрите на источник Data.Time.Clock.UTC
, просто нет экземпляра Show
для UTCTime
.
Edit:
Как было сказано в новом письме, там есть потерянный экземпляр для Show UTCTime
в Data.Time.LocalTime.LocalTime
, поэтому, если вы его импортируете, ваш код будет работать.