私は署名付きの関数と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]
そしての代わりに…の部分のx
++
部分[c]
をy
モナドのものを巻きつけて返したいと思います。
手動でアンラップせずにそれを達成し、手動で結果を再度まとめる可能性はありx
ますy
か? 単純なコードを取得するには、モナド スタックの一番下に List モナドが必要ですか? Reader モナドは明らかに MonadPlus クラスのインスタンスではありません。