我想使用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)'
并将网络浏览器指向
http://localhost:3000
它在上述警告消息中以 HTML 页面的形式给出“内部服务器错误”。
我对 Haskell 和 Yesod 还很陌生……有人可以帮忙吗?