2014-05-03 2 views
3

Я читаю Real World Haskell; в главе 9 пример использует функцию getModificationTime от System.Directory, у которой был тип возврата ClockTime, но я думаю, что в новой версии System.Directory он имеет другой тип возврата. : т getModificationTime возвращает это:getModificationTime типа возврата больше не является System.ClockTime

getModificationTime 
:: FilePath -> IO time-1.4.0.1:Data.Time.Clock.UTC.UTCTime 

я могу заставить его работать на

import Data.Time.Clock 

Но мой вопрос, почему новый тип возвращаемого значения

IO time-1.4.0.1:Data.Time.Clock.UTC.UTCTime 

не только UTCTime? это потому, что тип из модуля, который не импортирован?

И в чем разница между System.Time и Data.Time.Clock? Является ли последнее предпочтительным?

+0

Какая версия GHC вы используете? –

+0

The Glorious Glasgow Haskell Compilation System, версия 7.6.3 – swang

ответ

1

Рекомендуемые функции времени изменились. Data.Time и т. Д. Из пакета time является полным и более логичным переписанием функций времени Haskell. Цитирую верхушку http://hackage.haskell.org/package/old-time-1.1.0.2/docs/System-Time.html:

Стандартная библиотека времени от Haskell 98. Эта библиотека устарела, пожалуйста, смотрите на Data.Time в пакете времени вместо этого.

+0

спасибо, знаете ли вы, что тип time-1.4.0.1: Data.Time.Clock.UTC.UTCTime означает? бит раньше: там, потому что я не импортировал библиотеку? – swang

+0

@swang Да, вот в чем причина. Часть перед ':' является именем пакета, затем появляется имя модуля, а затем имя типа. Поэтому, если вы импортируете модуль, все становится просто «UTCTime». –

Смежные вопросы