【问题标题】:Why derive Typeable for this type为什么要为这种类型派生 Typeable
【发布时间】:2018-09-30 06:42:28
【问题描述】:

xmonad源代码中,我发现:

data Resize     = Shrink | Expand   deriving Typeable

我不明白为什么这需要来自Typeable

我看到了 Chrisdone 的著名blog post,它解释了 Typeable 的各种用法。但是我在xmonad源代码中找不到任何场景。

有什么提示吗?

【问题讨论】:

  • 绝对必要吗?如果删除deriving 子句并重新编译,会发生什么?有些程序员只是添加了一些deriving 语句,以便以后使用这些语句很容易。

标签: haskell xmonad


【解决方案1】:

它是旧版本 GHC 的残余。现在Typeable 是自动为所有类型派生的,deriving Typeable 什么都不做,只是允许向后兼容。

【讨论】:

    【解决方案2】:

    Typeable 总是可以为所有类型派生,所以...为什么不呢? xmonad 代码可能不使用Typeable 实例,但用户可能想要。

    请注意,Typeable 是一个类,其实例通常不应手动定义。

    【讨论】:

    • 从 ghc 7.8 开始,您无法手动定义此类实例。
    猜你喜欢
    • 1970-01-01
    • 2013-10-26
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2022-11-27
    • 2012-02-23
    相关资源
    最近更新 更多