Haskell类型类层次结构问题

时间:2011-06-30 00:25:02

标签: haskell typeclass

我有一个涉及类型类的场景,我不太确定如何解决它。

我有

class Event a where
     timestamp :: a -> UTCTime
     rawData :: a -> ByteString

class Something a where
    something :: a -> SomethingElse

在我的代码中,我想创建一个实现Event和Something的对象。但是,在某些情况下,函数需要从调用rawData返回以构造SomethingElse对象。我想知道是否要构造这些类型类以便能够构建像

这样的函数
convert :: (Event a, Event b, Something b) => a -> b

能够调用convert x ::(某事物的实例)才能进行转换,有点像二进制get的使用方式。

我意识到这是一个相当模糊的描述,但如果我可以添加任何其他内容,请告诉我。

由于

1 个答案:

答案 0 :(得分:2)

在类类中你需要确保类型a已经实现了类型类Event,因此Something的定义变为:

class Event a => Something a where
     something :: a -> SomethingElse