Sono un neofita dei trasformatori monad, domanda così dispiaciuta. Ho il valore val :: MaybeT IO String
e la funzione fn :: String -> IO [String]
. Quindi dopo l'associazione, ho val >>= liftM fn :: MaybeT IO (IO [String])
. Come posso rimuovere la monade IO duplicata e ottenere il risultato del tipo MaybeT IO [String]
?Trasformatori Monad Duplicazione Monad
10
A
risposta
13
Utilizzare lift
(o liftIO
) anziché liftM
.
> :t val >>= lift . fn
val >>= lift . fn :: MaybeT IO [String]
liftM
è per l'applicazione di funzioni pure in una monade. lift
e liftIO
sono per il sollevamento di azioni in un trasformatore.
liftM :: Monad m => (a -> b) -> m a -> m b
lift :: (Monad m, MonadTrans t) => m a -> t m a
liftIO :: MonadIO m => IO a -> m a
Problemi correlati
- 1. Lavorare su stack di trasformatori monad permutati
- 2. Librerie di trasformatori Monad - quale utilizzare?
- 3. Evitare il sollevamento con i trasformatori Monad
- 4. Classi di penetrazione dello stack di Monad con trasformatori Monad liberi/operativi?
- 5. Come convertire tra stack monad con trasformatori in scalaz 7
- 6. Uso di sinonimi di tipo nei trasformatori monad
- 7. Esempio di pila Monad grande
- 8. Quale pacchetto Haskell ha un'unità functor/monad?
- 9. lista monad transformer
- 10. istanza Monoid Monad
- 11. Monad transformer per NonEmptyList?
- 12. aiuto con lettore monad
- 13. Reader Monad con Scalaz
- 14. Haskell: FIFO monad
- 15. JS Funzione unità Monad
- 16. Haskell Quine: "ap" Monad
- 17. Come convertire in modo pulito tra liste e trasformatori monad ListT?
- 18. Impossibile derivare Applicativo quando si combinano due pile di trasformatori monad
- 19. Unwrapping the Haskell State Monad
- 20. Funzione come istanza di Monad
- 21. Haskell: Trapped in IO monad
- 22. Scalaz's traverse_ con IO monad
- 23. Traduci da monad a applicativo
- 24. monoid vs monad in Scala
- 25. IO all'interno della Get Monad
- 26. Turtle Graphics come Haskell Monad
- 27. Cortocircuito AND dentro IO Monad
- 28. IO basato su evento "Monad-friendly"
- 29. Trasformatore Monad per il monitoraggio dell'avanzamento
- 30. Estrazione della composizione monad come trasformatore