6

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

1 回答 1

13

base中的类型而言,Proxy正是如此。Const ()也可以。(也有U1,但这是泛型机制的一部分,在其他情况下可能会觉得有点不合适。)

于 2019-04-28T19:24:09.607 回答