我正在编写一段使用抽象的 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