首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让像HasHdbc这样的Snaplet在快照上下文之外工作?

如何让像HasHdbc这样的Snaplet在快照上下文之外工作?
EN

Stack Overflow用户
提问于 2012-12-04 06:21:31
回答 1查看 90关注 0票数 1

我正试图实现这一点。

类型类HasHdbc具有以下定义

代码语言:javascript
复制
class  (  IConnection c
       ,  ConnSrc s
       ,  MonadCatchIO m
       )
  =>   HasHdbc m c s | m -> c s where
  getHdbcState :: m (HdbcSnaplet c s)

可以这样定义Snap应用程序类型类的一个实例:

代码语言:javascript
复制
instance HasHdbc (Handler App App) Connection IO where
  getHdbcState = with dbLens get

有没有人可以使用HasHdbc类型类来描述如何在快照上下文之外创建这个命令行工具?我对类型类有一个基本的理解,但是类型签名getHdbcState :: m (HdbcSnaplet c s)对我来说是一个挑战,比如定义一个IO Monad的实例。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-04 23:39:14

你在正确的轨道上。您确实需要为想要使用的任何monad定义一个HasHdbc实例。为此,您必须定义一个返回HdbcSnaplet的函数getHdbcState。该数据类型中的信息不可能来自任何地方,但是getHdbcState函数不接受任何参数。这意味着您必须为数据库服务器添加常量,或者从文件或其他文件中读取常量。一种更灵活的方法是为ReaderT或Reader创建一个HasHdbc实例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13692823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档