Yesod Handler

Handler的签名如下,本质是一个对HandlerData处理的IO函数。

1
2
3
4
5
6
7
8
9
10
data HandlerData child site = HandlerData
{ handlerRequest :: !YesodRequest
, handlerEnv :: !(RunHandlerEnv child site)
, handlerState :: !(IORef GHState)
, handlerResource :: !InternalState
}

newtype HandlerFor site a = HandlerFor
{ unHandlerFor :: HandlerData site site -> IO a
}

site是项目的配置,对site提供路由等实现。