auszupacken Ich kann tun: runIdentity
, runErrorT
und mehr zu inneren monad auszupacken.
Was soll ich jedoch im Fall von IO (Either String Int)
tun? Wie man es auspackt?Haskell, wie IO IO Monad
Antwort
Sie nicht IO a
Aktionen auspacken. Stattdessen fügen Sie sie in die Aktion main
ein (die über einen IO
-Typ verfügt und daher solche Aktionen verwenden kann), und der Compiler stellt sicher, dass main
ausgeführt wird.
Sie können auch Funktionen lehren, die nicht verstehen, IO
, wie man mit IO
umgehen; zum Beispiel haben wir:
fmap :: (a -> b) -> IO a -> IO b
(=<<) :: (a -> IO b) -> IO a -> IO b
Wenn Sie also eine Funktion, die eine Either String Int
verbraucht, können Sie eine der oben genannten Funktionen verwenden kann es zu lehren, wie ein IO (Either String Int)
statt zu konsumieren.
Für weitere Informationen können Sie genießen The IO Monad for People Who Simply Don't Care. (Ich mag auch die Monad-Tutorials You Could Have Invented Monads! (And Maybe You Already Have.) und All About Monads, obwohl sie weniger direkt für diese Frage relevant sind.)
'fmap (+1) (IO 1)' gib Fehler: kein Konstruktor für 'IO' –
@HaskellFun Du kannst reinen Werten beibringen wie' IO'-artig mit 'return :: a -> IO a'. –
Es hilft mir nicht –
- 1. C/C++ Wrapper für Haskell IO Monad
- 2. Haskell IO Monad und Speicher verwenden
- 3. Datensatzaktualisierungsfehler in IO Monad?
- 4. Kurzschluss UND innerhalb IO Monad
- 5. Haskell Monade: IO [Double] bis [IO Double]
- 6. "Lazy IO" in Haskell?
- 7. Haskell IO Ausführungsreihenfolge
- 8. Haskell default io buffering
- 9. Verkettet if/else im IO Monad
- 10. Haskell Weg zu [IO String] in IO String
- 11. Konvertiere [IO Int] zu IO [Int] in Haskell?
- 12. Haskell IO Bool fold Frage
- 13. Haskell-Streams mit IO-Effekten
- 14. Eine Liste von IO Float zusammenfassen: [IO Float] in Haskell
- 15. Memoizing IO Computations in Haskell
- 16. Mapping über IO in Haskell
- 17. Filter IO [Maybe String] zu IO [String]
- 18. Beinhaltet Socket IO Disk IO?
- 19. Haskell und Low-Level-IO-Aktionen
- 20. Haskell: Fang niedriges Niveau IO Ausnahmen
- 21. Haskell: Ausnahmebehandlung in Nicht-IO-Monaden
- 22. Auspacken des Haskell State Monad
- 23. Ausführen von Haskell HXT außerhalb von IO?
- 24. Warum/wie funktioniert rekursives IO?
- 25. Winkel-socket-io io ist nicht
- 26. Haskell IO: Konnte den erwarteten Typ `IO a0 'mit dem tatsächlichen Typ nicht übereinstimmen
- 27. Wie verwendet .NET IO Threads oder IO Completion Ports?
- 28. Monad Transformatoren Monad Duplizierung
- 29. Wie man zwei (IO) Strings in Haskell concat?
- 30. Wie verbessert man die Leistung von Haskell IO?
Sie nicht "wickeln" diesen Typ - Sie können Dinge wie "Identität" und "ErrorT", weil Sie sind einfach neue Typen für andere Typen. – user2407038