没有`fromList`函数的类似`IsList`的类型类

时间:2018-03-14 19:26:03

标签: haskell typeclass

GHC.Exts模块导出IsList类型类:

class IsList l where
  type Item l
  fromList  :: [Item l] -> l
  toList    :: l -> [Item l]

  fromListN :: Int -> [Item l] -> l
  fromListN _ = fromList  

我的数据类型定义如下:

newtype MyData = MyData { toMap :: Map (RefTo X) X }

有时在列表中使用MyData的元素很方便,而且由于Ref XX之间存在双射,我想到定义一个{{ 1}} IsList的实例。

现在问题是构造函数MyData没有公开,类型MyData的值只能通过形式的(smart?)构造函数创建:

MyData

因此定义mkMyData :: [X] -> Either Error MyData 会破坏智能构造函数的目的。

是否有像fromList这样的类型类,这样类的实例可以转换为列表,而不是其他方式?

0 个答案:

没有答案