我有f
签名f :: [a] -> StateT Int Reader b [c]
和f'
签名的功能f' :: a -> StateT Int Reader b [c]
f 中的计算(非常简化)如下所示:
f [] = return []
f (s:st) = f' s >>= \x ->
f st >>= \y ->
return $ ...
而代替...我想返回带有单子材料的[c]
部分。
是否有可能在不手动展开并再次手动将结果放在一起的情况下实现这一目标?我需要一个 List monad 在我的 monad 堆栈的底部来获取简单的代码吗?Reader Monad 显然不是 MonadPlus 类的实例。x
++
[c]
y
x
y