私は、yesod-sitemapを使用してサイトマップファイルを生成するgetSitemapR
ハンドラを作成しています。私が抱えている問題は、String
をUTCTime
に変換して、Data.Time.Clock
に定義しています。 haddockのドキュメントでは、UTCTime
がRead
の型クラスのインスタンスなので、これが私が試していることです。ここに私のコードです。文字列を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メーリングリストにあります。私はここで本当に愚かな間違いを犯していると思いますが、私は確信が持てません。
はあなたの時間と配慮をいただき、ありがとうございます。
あなたは 'read'を使用していますか?クラッシュするか、コードがコンパイルされませんか?あなたはどこにいらっしゃいますか? – Tarrasch