我正试图实现这一点。
类型类HasHdbc具有以下定义
class ( IConnection c
, ConnSrc s
, MonadCatchIO m
)
=> HasHdbc m c s | m -> c s where
getHdbcState :: m (HdbcSnaplet c s)可以这样定义Snap应用程序类型类的一个实例:
instance HasHdbc (Handler App App) Connection IO where
getHdbcState = with dbLens get有没有人可以使用HasHdbc类型类来描述如何在快照上下文之外创建这个命令行工具?我对类型类有一个基本的理解,但是类型签名getHdbcState :: m (HdbcSnaplet c s)对我来说是一个挑战,比如定义一个IO Monad的实例。
发布于 2012-12-04 23:39:14
你在正确的轨道上。您确实需要为想要使用的任何monad定义一个HasHdbc实例。为此,您必须定义一个返回HdbcSnaplet的函数getHdbcState。该数据类型中的信息不可能来自任何地方,但是getHdbcState函数不接受任何参数。这意味着您必须为数据库服务器添加常量,或者从文件或其他文件中读取常量。一种更灵活的方法是为ReaderT或Reader创建一个HasHdbc实例。
https://stackoverflow.com/questions/13692823
复制相似问题