我有一个涉及类型类的场景,我不太确定如何解决它。
我有
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的使用方式。
我意识到这是一个相当模糊的描述,但如果我可以添加任何其他内容,请告诉我。
由于
答案 0 :(得分:2)
在类类中你需要确保类型a已经实现了类型类Event,因此Something的定义变为:
class Event a => Something a where
something :: a -> SomethingElse