Я пишу кусок кода на Haskell, который использует абстракцию Traversable
.За этой абстракцией я хочу иметь возможность скрыть все обычные проходимые структуры, такие как списки, деревья, карты и т. Д., В особом случае Data.Functor.Identity.Identity
как элементарную структуру, содержащую одно значение.Я также хотел бы охватить случай "пустой" структуры.Существует ли такой «пустой» проходимый экземпляр?Может быть, это уже предоставлено какой-либо библиотекой?
Моя первая (и, возможно, наивная) попытка определить такой экземпляр была бы следующей.Имеет ли это смысл?
data Empty a = Empty
instance Functor Empty where
fmap _ _ = Empty
instance Foldable Empty where
foldr _ init _ = init
instance Traversable Empty where
sequenceA _ = pure Empty