Интуиция необязательного типа, подобного этому, Maybe Int
заключается в том, что либо нет Int (то есть он Nothing
есть), либо существует некоторое Int; там что-то есть
Для меня имеет смысл, что мы вызываем конструктор типов для «отрицательного» случая Nothing
, поскольку это означает именно то, что там его нет Int
. Но зачем использовать слово « Просто» в том случае, когда акцент делается на том, что на самом деле есть ?
Для меня слово «просто» несет в себе смысл того, что то, что оно описывает, меньше альтернативы; противоположность чего-то на самом деле существующего там; например,
A: Вы делаете что-нибудь сегодня вечером?
Б: Нет; Я просто останусь и посмотрю телевизор.
A: Вы исследовали жуткие призрачные звуки вокруг вашего дома?
Б: Да, оказывается, это была просто сова.
Очевидно, мне не хватает интуиции, на которой был основан этот выбор имен. Что это такое? Потому что для меня слово Just означает противоположность тому, как оно используется в Maybe
типе.
Maybe
в качестве монады, они, вероятно, использовали быreturn
и, вероятно, что-то вродеmzero
вместоNothing
. КогдаJust
используется напрямую, обычноMaybe
не используется в монадическом стиле в этот момент.Option
типом. Дизайнеры Haskell, вероятно, сочли, чтоfoo x = Just x
«читают» лучше, чемfoo x = Some x
. Точно так же определениеdata Maybe a = Just a | Nothing
читается очень хорошо, как «Maybe a
естьJust a
или естьNothing
».Some
там неплохо читает, ноNone
не дляdata Option a = Some a | None
.Ответы:
Это было объяснено в прошлом Саймоном Пейтоном Джонсом. Это означает, что либо Nothing может быть значением, либо «просто» одно значение другого типа. Существует «просто» еще одна вещь, которая может быть возвращена как значение, или ничего.
источник