Тип Option
вдвойне заселен.Он может содержать что-то или нет.Это ясно из сигнатуры fold
в первой черте, в которой вы можете только:
- вернуть результат применения
some
, если у вас есть значение типа A
сидявокруг (вы Some
) - верните свой аргумент
none
(вы None
)
Любая данная реализация может выполнять только одну или другуюбез нарушения ссылочной прозрачности.
Так что я считаю ошибкой называть его однобитым.Но любая реализация любой из этих черт должна быть изоморфна одному из этих двух случаев.
РЕДАКТИРОВАТЬ
Тем не менее, я не думаю, что вы действительно можете охарактеризовать "обитаемость" типане зная его конструкторов.Если бы вы расширили одну из этих опций с помощью реализации, которая имела конструктор, например, Tuple12[A]
, вы могли бы написать 13 различных версий fold
.