Какие интуиции поддерживают вызов конструктора Maybe в Haskell «Just»?


11

Интуиция необязательного типа, подобного этому, Maybe Intзаключается в том, что либо нет Int (то есть он Nothingесть), либо существует некоторое Int; там что-то есть

Для меня имеет смысл, что мы вызываем конструктор типов для «отрицательного» случая Nothing, поскольку это означает именно то, что там его нет Int. Но зачем использовать слово « Просто» в том случае, когда акцент делается на том, что на самом деле есть ?

Для меня слово «просто» несет в себе смысл того, что то, что оно описывает, меньше альтернативы; противоположность чего-то на самом деле существующего там; например,

A: Вы делаете что-нибудь сегодня вечером?

Б: Нет; Я просто останусь и посмотрю телевизор.

A: Вы исследовали жуткие призрачные звуки вокруг вашего дома?

Б: Да, оказывается, это была просто сова.

Очевидно, мне не хватает интуиции, на которой был основан этот выбор имен. Что это такое? Потому что для меня слово Just означает противоположность тому, как оно используется в Maybeтипе.


4
В этом случае, я думаю, что Scala пошел с лучшим именем Some, в отличие от None (не говоря уже о том, что это изобретение Scala).
Андрес Ф.

3
@AndresF. Это относится, по крайней мере, к М.Л., с которым Одерски был определенно хорошо знаком.
Дерек Элкинс покинул SE

2
@RobertHarvey Если бы Haskeller использовал Maybeв качестве монады, они, вероятно, использовали бы returnи, вероятно, что-то вроде mzeroвместо Nothing. Когда Justиспользуется напрямую, обычно Maybeне используется в монадическом стиле в этот момент.
Дерек Элкинс покинул SE

2
Исторический прецедент был бы 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.
Дерек Элкинс покинул SE

3
Они все еще живы. Вы можете написать людям, таким как Фил Уодлер и Саймон Пейтон Джонс, и спросить их. Или попробуйте список рассылки Haskell-Cafe.
Дерек Элкинс покинул SE

Ответы:


2

Это было объяснено в прошлом Саймоном Пейтоном Джонсом. Это означает, что либо Nothing может быть значением, либо «просто» одно значение другого типа. Существует «просто» еще одна вещь, которая может быть возвращена как значение, или ничего.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.