Joh*_*ler 14 haskell typeclass ghc ghci
我正在搞乱,HashMap并试图用Data.Bson.ObjectId一把钥匙.当然,我发现Hashable该结构没有实例.没关系,因为写一个是微不足道的.1
instance Hashable ObjectId where hash (Oid x y) = hash (x,y)
Run Code Online (Sandbox Code Playgroud)
我将该行键入GHCi并被告知"输入`实例'上的解析错误".这实际上是有意义的,因为GHCi提示操作就好像在IO monad中将行键入到do块中,并且在此上下文中无法定义实例.
那么我的问题是,有没有办法在GHCi中定义一个新实例?
1为什么库不提供此实例是另一回事.我相信答案是限制依赖性,除了bson包已经依赖于太阳下的一切.
C. *_*ann 14
好消息:是的,有一种方法可以在GHCi中定义一个新实例.
坏消息:目前,这样做的第一步是"安装GHC的开发快照".
很长一段时间,这在GHCi中显然缺少功能.没有固有的理由让它缺席,但我认为它有点难以实施,所以它被搁置了.
但是,从版本7.4.1开始,它现在可用:
在GHCi提示符下,您还可以输入任何顶级Haskell声明,包括数据,类型,新类型,类,实例,派生和外部声明.例如:
Run Code Online (Sandbox Code Playgroud)Prelude> data T = A | B | C deriving (Eq, Ord, Show, Enum) Prelude> [A ..] [A,B,C] Prelude> :i T data T = A | B | C -- Defined at <interactive>:2:6 instance Enum T -- Defined at <interactive>:2:45 instance Eq T -- Defined at <interactive>:2:30 instance Ord T -- Defined at <interactive>:2:34 instance Show T -- Defined at <interactive>:2:39
您是否认为现在拥有安装非发布版GHC的麻烦取决于您.
| 归档时间: |
|
| 查看次数: |
1160 次 |
| 最近记录: |