3

我有一个类型

type T s r a = StateT [s] (ListT (Reader r)) a

我想创建一个产生每个当前状态的单子值

states :: T a r a

但是我今天感觉很愚蠢,我不知道如何转换 to 的T a r [a]T a r a

states = do
  as <- get
  -- insert magic
  return a
4

1 回答 1

5

想了个办法

states = do
  as <- get
  a <- lift . ListT $ return as
  return a

可以压缩到

states = get >>= lift . ListT . return

好的,现在感觉更聪明了

于 2011-08-20T14:29:00.930 回答