2010-07-11 9 views
14

ff .:UTCTime içeren veriler için bir Göster örneği oluşturulamıyor

import Data.Time.Clock 

data D = D { ..., 
      someDate :: UTCTime, 
      ... } 
     deriving (Eq, Show) 

gibi verileri tanımladım. Derlediğimde ff aldım. hata:

No instance for (Show UTCTime) 
    arising from the 'deriving' clause of a data type declaration 
       at ... 

Zaten documentation'ye göre bu örneğe sahip olması gereken zaman-1.1.3 paketine sahibim. GHC sürümüm 6.8.2.

+0

Doğru sürümü aldığınızı kontrol etmek için ghc-pkg düğmelerini kullanın. –

+0

Evet, 1.1.3 alınıyor. "Ghc-pkg son zaman" koştum. Ayrıca "-v" seçeneği ile derledim ve derleyicinin eski sürümü 1.1.3 lehine sakladığını gördüm. –

+0

"Show Show" UTCTime "için bir Google araması,' Data.Time.LocalTime' içinde olduğunu ortaya çıkarır. Bu teknik, gelecekte benzer sorunlar için yararlı olabilir. –

cevap

28

Data.Time paketinin her bir parçasını ayrı ayrı almayın. Sadece Data.Time'u içe aktarmanız için tasarlandı ve bu, yaygın olarak kullanılan hemen hemen her şeyi çekecek. UTCTime için Show örneği dahil.

o kadar ad dağınıklığı, ithalat ihtiyacınız sadece semboller istemiyorsanız:

import Data.Time (UTCTime, getCurrentTime) 

veya başka ne. Bu zaten iyi bir fikirdir - kütüphane güncellendiyse ve daha önceden tanımlanmış adında bir ad kullanmaya başlarsa, daha sonra isim çatışmaları 'a karşı korur.

3

Belgeler yatar. Data.Time.Clock.UTC için kaynağa bakarsanız, UTCTime için Show örneği yoktur.

Düzenleme:

newacct yardımsever belirttiği gibi, Data.Time.LocalTime.LocalTime yılında Show UTCTime için yetim bir örneği var, yani bunun içe eğer, kodunuz çalışacaktır.

+3

Data.Time.LocalTime.LocalTime içinde: http://hackage.haskell.org/packages/archive/time/1.1.3/doc/html/src/Data-Time-LocalTime-LocalTime.html – newacct

+0

E-postayla gönderdim Paketleyici açıklığa kavuşturmak için. Bir cevap alır almaz gönderirim. –

+1

Data.Time.LocalTime.LocalTime içinde tanımlanan bir artık örneği. Data.Time içe aktarma yapıcıya Data.Time.UTC ve Show örneğini Data.Time.LocalTime.LocalTime öğesinde verir. –

İlgili konular