【发布时间】:2011-12-20 01:08:12
【问题描述】:
应用类型
data App = App
{ _heist :: Snaplet (Heist App)
, _session :: Snaplet SessionManager
}
初始化器
...
addRoutes [ ("/ss", companyHandler)
, ("", heistServe)
]
...
处理程序
companyHandler :: Handler b v ()
companyHandler = method GET getter <|> method POST setter
where
getter = do
value <- getFromSession "name"
writeText $ fromMaybe "nothing" value
setter = do
mname <- getParam "name"
setInSession "name" (convert mname)
getter
convert = T.pack . B.unpack . (fromMaybe "nothing")
heistServe 的类型为 Handler b (Heist b) ()
类型错误:
src/Tutorial.hs:50:52:
Couldn't match type `v' with `SessionManager'
`v' is a rigid type variable bound by
the type signature for companyHandler :: Handler b v ()
at src/Tutorial.hs:50:1
Expected type: Handler b v ()
Actual type: Handler b SessionManager ()
In the second argument of `method', namely `setter'
In the second argument of `(<|>)', namely `method POST setter'
【问题讨论】:
标签: haskell haskell-snap-framework