我想在 haskell 中编写一个提供当前时间的简单网络服务器。时间应以 json 格式返回。
这是我到目前为止所拥有的:
{-# LANGUAGE DeriveDataTypeable #-}
import Happstack.Server
import Text.JSON.Generic
import Data.Time
import System.IO.Unsafe
data TimeStr = TimeStr {time :: String} deriving (Data, Typeable)
main = simpleHTTP nullConf $ ok $ toResponse $ encodeJSON (TimeStr $ show (unsafePerformIO getCurrentTime))
我知道unsafePerformIO
应该避免这种情况,但我还找不到更好的解决方案。也许这就是问题所在?我对单子有一个非常基本的了解。
结果如下:
{"time":"2014-10-16 16:11:38.834251 UTC"}
问题是当我刷新localhost:8000
时间并没有改变。是否正在进行某种记忆?