Не может получить Выставочный экземпляр для данных, содержащих UTCTime

Мне определили данные как и следующие:

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.

14
задан Chry Cheng 11 July 2010 в 15:32
поделиться

2 ответа

Не импортируйте каждую часть пакета Data.Time отдельно. Он разработан для того, чтобы вы импортировали только Data.Time , и это влечет практически все, что обычно используется. Включая экземпляр Show для UTCTime .

Если вам не нужен такой беспорядок в пространстве имен, импортируйте только те символы, которые вам нужны:

import Data.Time (UTCTime, getCurrentTime)

или что-то еще. В любом случае это хорошая идея - она ​​защищает вас от конфликтов имен. позже, если библиотека обновится и начнет использовать имя, которое у вас уже есть определенный.

28
ответ дан 1 December 2019 в 08:51
поделиться

Документация лжет. Если вы посмотрите на источник Data.Time.Clock.UTC , то для UTCTime просто не существует экземпляра Show .

Редактировать:

Как услужливо указал newacct, есть потерянный экземпляр для Show UTCTime в Data.Time.LocalTime.LocalTime , поэтому, если вы импортируете это, ваш код буду работать.

3
ответ дан 1 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: