【发布时间】:2012-01-24 18:28:13
【问题描述】:
我有一个如下形式的单子变压器堆栈:
newtype T m a = T { unT :: StateT State (SqlPersist m) a }
deriving (Monad, MonadState State)
并且想使用持久的insert 和lookup 调用,所以我需要为T 创建一个PersistBackend 实例。但是,幻像类型将特定后端编码为 Key 返回类型 - 这会导致一些额外的麻烦。为了解决幻像类型问题,我的实例具有以下形式:
instance (Monad m, MonadIO m, MonadBaseControl IO m) => PersistBackend T m where
insert = T . lift . liftM (Key . unKey) . insert
... and about a dozen such methods ...
我是否盲目地忽略了一种更简单的方法?手动提升调用函数以外的一种方式:insertT = T . lift . insert
【问题讨论】:
标签: haskell persistent yesod