我正在编写一段使用Traversable
的抽象的Haskell代码。在这种抽象的背后,我希望能够隐藏所有常规的可遍历结构,例如列表,树,地图等,并以特殊情况将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