适当的抽象,以及与法律相关的利弊

时间:2017-06-06 16:00:10

标签: haskell typeclass abstraction cons

存在多个支持cons操作的数据结构 - 在此结构的开头添加元素:

  • (:)列表
  • {li> (<|) Data.Sequence {li> cons Data.Text

所有这些数据结构也有headtail。所以我想创建抽象(使用类型类),覆盖所有这些可能的类型,并使用多态操作,以便对实现此类型的任何数据类型使用head(:)tail类。而且,我想要这种类型的一些法律。

我想知道,是否有任何好的现有抽象允许解构为 head tail 并预先添加元素?

真的很接近这个:

-- Foldable is used because I can have and may use
-- head :: Foldable f => f a -> Maybe a

class Foldable f => Prependable f where
    (:)  :: a -> f a -> f a
    tail :: f a -> f a

0 个答案:

没有答案