Haskell 哈斯克尔:可以';我不知道如何使用monad转换器堆栈
我有一种Haskell 哈斯克尔:可以';我不知道如何使用monad转换器堆栈,haskell,monads,monad-transformers,Haskell,Monads,Monad Transformers,我有一种 type T s r a = StateT [s] (ListT (Reader r)) a 我想创建一个一元值,它产生当前的每个状态 states :: T a r a 但是我今天觉得自己很愚蠢,我不知道如何将tar[a]的值转换成tara states = do as <- get -- insert magic return a states=do 因为找到了一条出路 states = do as <- get a <- lift .
type T s r a = StateT [s] (ListT (Reader r)) a
我想创建一个一元值,它产生当前的每个状态
states :: T a r a
但是我今天觉得自己很愚蠢,我不知道如何将tar[a]
的值转换成tara
states = do
as <- get
-- insert magic
return a
states=do
因为找到了一条出路
states = do
as <- get
a <- lift . ListT $ return as
return a
好了,现在感觉更聪明了
states = get >>= lift . ListT . return