j'ai fonction f
avec la signature f :: [a] -> StateT Int Reader b [c]
et f'
avec signature f' :: a -> StateT Int Reader b [c]
tranformers monade et l'empilage de plusieurs monades
Le calcul de f (très simplifiée) ressemble à ce que:
f [] = return []
f (s:st) = f' s >>= \x ->
f st >>= \y ->
return $ ...
Et à la place de le ... Je voudrais retourner le [c]
partie de x
++
la [c]
partie de y
avec les choses de monad enroulées autour.
Existe-t-il une possibilité de réaliser cela sans déballer manuellement les x
et y
et de regrouper manuellement le résultat? Ai-je besoin d'une monade List au bas de ma pile monad pour obtenir un code simple? Le Reader Monad n'est évidemment pas une instance de la classe MonadPlus. Je ne comprends pas ce que vous voulez dire par le déballage x
et y
oh ouais, vous 're right - thx :) J'ai mélangé le type de la monade sous-jacente et le type de résultat du calcul. – haselhorstk