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