Не удается получить экземпляр 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, поэтому, если вы его импортируете, ваш код будет работать.