"return a" soll ein wickeln im Rahmen einiger Monad:Warum gibt "Return Nothing" nichts zurück?
*Main> :i return
class Applicative m => Monad (m :: * -> *) where
...
return :: a -> m a
...
-- Defined in ‘GHC.Base’
Wenn ich frage GHCI, was die Art der "Rückkehr Nothing" ist, ist es dem entspricht:
*Main> :t return Nothing
return Nothing :: Monad m => m (Maybe a)
Aber wenn ich es beurteilen, sehe ich keinen äußeren Monade, sondern nur die innere Vielleicht:
*Main> return Nothing
Nothing
GHCi standardmäßig auf die Monade IO, wenn Sie keinen festlegen. Es druckt nur den Inhalt eines 'IO (Vielleicht ein)' – 4castle
@ 4castle Um shachaf etwas falsch zu maskieren: Ein 'IO (Vielleicht a)' enthält ein 'Maybe a' auf die gleiche Weise, dass'/bin/ls' eine Liste enthält von Dateien. Das mag etwas pedantisch klingen, aber es druckt nicht den Inhalt von IO (Maybe a). Es läuft ein 'IO (Maybe a)' und druckt dann die Ergebnisse davon. Die Unterscheidung kann wichtig sein. –
@DavidYoung Ich persönlich finde die Unterscheidung nicht wichtig, weil es die Aufgabe der IO-Monade ist, die interne Repräsentation des Wertes zu kennen. Für Denkzwecke denke ich normalerweise an alle Monaden als Container (ob sie tatsächlich den Wert enthalten oder nicht). – 4castle