Haskell の yesod フレームワークを使用して、html ページ内に curl コマンドの結果を投稿したいと考えています。これは私がこれまで持っているコードです:
{-# LANGUAGE TypeFamilies, QuasiQuotes, MultiParamTypeClasses,
TemplateHaskell, OverloadedStrings #-}
import Yesod
import Network.Curl
import Text.Blaze hiding (toMarkup)
data HelloWorld = HelloWorld
mkYesod "HelloWorld" [parseRoutes|
/ HomeR GET
|]
url = "http://www.google.com/"
opts = [CurlFollowLocation True]
res=withCurlDo $ do
curlGet url opts
return ()
instance ToMarkup (IO a) where
toMarkup a = a
instance Yesod HelloWorld
getHomeR :: Handler RepHtml
getHomeR = defaultLayout [whamlet|#{toMarkup res}|]
main :: IO ()
main = warpDebug 3000 HelloWorld
このコードは、警告付きでサーバーを起動します
Warning: No explicit method nor default method for `Text.Blaze.toMarkup'
In the instance declaration for `ToMarkup (IO a)'
Web ブラウザで
http://localhost:3000
上記の警告メッセージに沿って「Internal Server Error」が HTML ページとして表示されます。
私はHaskellとYesodにかなり慣れていません...誰か助けてもらえますか?