Intuicja opcjonalnego typu jak Maybe Int
to, że albo nie ma żadnego Int (w ten sposób, nie Nothing
istnieje), albo że istnieje jakiś Int; coś tam jest.
Ma dla mnie sens, że nazywamy konstruktor typu dla przypadku „negatywnego” Nothing
, ponieważ oznacza to dokładnie to, że tam nie Int
ma. Ale po co używać słowa Właśnie w przypadku, gdy nacisk kładziony jest na coś, co rzeczywiście tam jest ?
Dla mnie słowo „po prostu” niesie ze sobą konotację, że rzecz, którą opisuje, jest mniejsza niż alternatywa; przeciwieństwo czegoś, co faktycznie tam jest; na przykład,
Odp .: Czy robisz coś dziś wieczorem?
B: Nie; Jestem po prostu będzie pobyt i oglądać telewizję.
Odp .: Czy badałeś przerażające dźwięki duchów w twoim domu?
B: Tak, okazuje się, że to była po prostu sowa.
Najwyraźniej brakuje mi jakiejkolwiek intuicji, na której opiera się ten wybór nazw. Co to jest? Ponieważ dla mnie słowo Po prostu oznacza przeciwieństwo tego, w jaki sposób jest używane w tekście Maybe
.
Maybe
jako monada, prawdopodobnie użyłbyreturn
i prawdopodobnie coś podobnegomzero
zamiastNothing
. KiedyJust
jest używany bezpośrednio, zwykleMaybe
nie jest w tym momencie używany w stylu monadycznym.Option
typu. Projektanci Haskell zapewne uważali, żefoo x = Just x
„czytają” lepiej niżfoo x = Some x
. Podobnie definicjadata Maybe a = Just a | Nothing
brzmi całkiem dobrze jako „Maybe a
jest alboJust a
alboNothing
”.Some
czyta się tam dość dobrze, aleNone
tak nie jestdata Option a = Some a | None
.Odpowiedzi:
Wyjaśnia to w przeszłości Simon Peyton Jones. Oznacza to, że albo Nic nie może być wartością, albo „tylko” jedną wartością innego typu. Jest „tylko” jeszcze jedna rzecz, którą można zwrócić jako wartość lub nic.
źródło