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 X
和X
之间存在双射,我想到定义一个{{ 1}} IsList
的实例。
现在问题是构造函数MyData
没有公开,类型MyData
的值只能通过形式的(smart?)构造函数创建:
MyData
因此定义mkMyData :: [X] -> Either Error MyData
会破坏智能构造函数的目的。
是否有像fromList
这样的类型类,这样类的实例可以转换为列表,而不是其他方式?