dan*_*dan 13 haskell typeclass
我正在为OAuth使用Haskell库,并且作者没有为我正在使用的类型派生Show,并且希望能够打印出来进行调试.我想为它推出Show.除了构建函数之外,有没有办法从库外部执行此操作,将所有记录字段复制到一个派生Show的记录类型中?
有问题的类型是来自Network.OAuth.Consumer的令牌:
Tik*_*vis 19
您可以使用名为的GHC扩展名StandaloneDeriving.
使用此扩展,您可以编写如下表达式:
deriving instance Show Token
Run Code Online (Sandbox Code Playgroud)
要使用它,请放
{-# LANGUAGE StandaloneDeriving #-}
Run Code Online (Sandbox Code Playgroud)
在您的文件的顶部.
独立派生的语法基本上与instance语句的语法完全相同,除了前面有deriving和没有where子句.这意味着您可以编写更具体的实例,例如:
deriving instance Show a => Foo (Maybe a)
Run Code Online (Sandbox Code Playgroud)
您还必须明确提供实例所需的上下文.你必须写一个像这样的独立实例:
deriving instance Show a => Show (Foo a)
Run Code Online (Sandbox Code Playgroud)
也就是说,您必须明确记录Show a所需的上下文.
这不应该出现在你的情况下,但要记住这一点.
| 归档时间: |
|
| 查看次数: |
285 次 |
| 最近记录: |