应用类型
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'