我有一个类型
type T s r a = StateT [s] (ListT (Reader r)) a
我想创建一个monadic值,产生每个当前状态
states :: T a r a
但我今天感觉很愚蠢,我无法弄清楚如何将T a r [a]
的值转换为T a r a
。
states = do
as <- get
-- insert magic
return a
答案 0 :(得分:5)
想出一条出路
states = do
as <- get
a <- lift . ListT $ return as
return a
哪些可以压缩到
states = get >>= lift . ListT . return
好的,现在感觉更聪明