Die Intuition eines optionalen Typs wie Maybe Int
ist, dass entweder kein Int vorhanden ist (also vorhanden ist Nothing
) oder dass es ein Int gibt; da ist etwas.
Für mich ist es sinnvoll, den Typkonstruktor für den "negativen" Fall zu nennen Nothing
, da dies genau bedeutet - dass es dort keinen Int
gibt. Aber warum das Wort nur für den Fall verwenden, dass der Schwerpunkt auf etwas liegt, das tatsächlich da ist ?
Für mich hat das Wort "Just" die Konnotation, dass das, was es beschreibt, weniger als die Alternative ist; das Gegenteil von etwas, das tatsächlich da ist; beispielsweise,
A: Machst du heute Abend etwas?
B: Nein; Ich werde einfach bleiben und fernsehen.
A: Hast du die gruseligen Geistergeräusche in deinem Haus untersucht?
B: Ja, es stellte sich heraus, dass es eigentlich nur eine Eule war.
Offensichtlich fehlt mir die Intuition, auf der diese Namenswahl beruhte. Was ist es? Denn für mich bedeutet das Wort Just genau das Gegenteil davon, wie es in dem Maybe
Typ verwendet wird.
Maybe
als Monade verwendet würde, würde er wahrscheinlich verwendenreturn
und wahrscheinlich so etwas wiemzero
anstelle vonNothing
. WennJust
es direkt verwendet wird,Maybe
wird es zu diesem Zeitpunkt normalerweise nicht im monadischen Stil verwendet.Option
Typ gewesen. Die Designer von Haskell hatten wahrscheinlich das Gefühl, dassfoo x = Just x
sie besser "lesen" alsfoo x = Some x
. In ähnlicher Weisedata Maybe a = Just a | Nothing
liest sich die Definition ziemlich gut als "Maybe a
ist entwederJust a
oder es istNothing
".Some
liest sich dort einigermaßen gut,None
tut es aber nicht fürdata Option a = Some a | None
.Antworten:
Dies wurde in der Vergangenheit von Simon Peyton Jones erklärt. Dies impliziert, dass entweder Nothing der Wert oder 'nur' ein einzelner anderer Typwert sein kann. Es gibt 'nur' eine andere Sache, die als Wert zurückgegeben werden kann, oder nichts.
quelle