2011-11-20 13 views
6

私は、yesod-sitemapを使用してサイトマップファイルを生成するgetSitemapRハンドラを作成しています。私が抱えている問題は、StringUTCTimeに変換して、Data.Time.Clockに定義しています。 haddockのドキュメントでは、UTCTimeReadの型クラスのインスタンスなので、これが私が試していることです。ここに私のコードです。文字列をUTCTime型に変換する

module Handler.Root where 

import Import 
import Yesod.Goodies.Gravatar 
import Data.Time.Format 
import System.Locale 
-- This is a handler function for the GET request method on the RootR 
-- resource pattern. All of your resource patterns are defined in 
-- config/routes 
-- 
-- The majority of the code you will write in Yesod lives in these handler 
-- functions. You can spread them across multiple files if you are so 
-- inclined, or create a single monolithic file. 
getRootR :: Handler RepHtml 
getRootR = do 
    defaultLayout $ do 
     h2id <- lift newIdent 
     setTitle "Cloudrr homepage" 
     $(widgetFile "homepage") 

gravatar :: Text -> String 
gravatar email = 
    gravatarImg email go 
    where 
    go = GravatarOptions { 
     gSize = Just (Size 140) 
     , gDefault = Just (Identicon) 
     , gForceDefault = ForceDefault False 
     , gRating = Just (PG) 
     } 

getSitemapR :: Handler RepXml 
getSitemapR = do 
    sitemap [smo RootR] 
    where 
    smo = SitemapUrl SitemapR{ 
     sitemapLoc = "http://www.cloudrr.me/sitemap.xml" 
     , sitemapLastMod = (read "2011-11-19 18:28:r52.607875 UTC")::UTCTime 
     , sitemapChangeFreq = Weekly 
     , priority = 0.7 
     } 

私はシステムプログラミング上の章20で実世界Haskellのの私のコピーを通して見てきたが、それはそれでUTCTimeは、コードサンプルですカバーしていない、私は「長期的」はHaskellでGoogleを検索しました結果を返さずに文字列をUTCTime "'に変換します。 Threadは、がMaybe UTCTimeを受け取っていないので、動作しないhaskell-cafeメーリングリストにあります。私はここで本当に愚かな間違いを犯していると思いますが、私は確信が持てません。

はあなたの時間と配慮をいただき、ありがとうございます。

+2

あなたは 'read'を使用していますか?クラッシュするか、コードがコンパイルされませんか?あなたはどこにいらっしゃいますか? – Tarrasch

答えて

7
, sitemapLastMod = (read "2011-11-19 18:28:r52.607875 UTC")::UTCTime 

小文字のrは存在しません。お試しください

, sitemapLastMod = (read "2011-11-19 18:28:52.607875 UTC")::UTCTime 
関連する問題