Welche Intuitionen unterstützen es, den Vielleicht-Konstruktor in Haskell als „nur“ zu bezeichnen?

11

Die Intuition eines optionalen Typs wie Maybe Intist, 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 Intgibt. 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 MaybeTyp verwendet wird.

Vijrox
quelle
4
In diesem Fall, glaube ich, hat die Scala den besseren Namen Some im Gegensatz zu None (ohne zu sagen, dass es Scalas Erfindung ist).
Andres F.
3
@AndresF. Es geht zumindest auf ML zurück, mit dem Odersky definitiv sehr vertraut war.
Derek Elkins verließ SE
2
@ RobertHarvey Wenn ein Haskeller Maybeals Monade verwendet würde, würde er wahrscheinlich verwenden returnund wahrscheinlich so etwas wie mzeroanstelle von Nothing. Wenn Justes direkt verwendet wird, Maybewird es zu diesem Zeitpunkt normalerweise nicht im monadischen Stil verwendet.
Derek Elkins verließ SE
2
Der historische Präzedenzfall wäre der OptionTyp gewesen. Die Designer von Haskell hatten wahrscheinlich das Gefühl, dass foo x = Just xsie besser "lesen" als foo x = Some x. In ähnlicher Weise data Maybe a = Just a | Nothingliest sich die Definition ziemlich gut als " Maybe aist entweder Just aoder es ist Nothing". Someliest sich dort einigermaßen gut, Nonetut es aber nicht für data Option a = Some a | None.
Derek Elkins verließ SE
3
Sie leben noch. Sie können Leuten wie Phil Wadler und Simon Peyton Jones eine E-Mail senden und sie fragen. Oder probieren Sie die Haskell-Cafe Mailingliste.
Derek Elkins verließ SE

Antworten:

2

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.

Lloyd Moore
quelle