gpt4 book ai didi

haskell - 声明后自动派生实例

转载 作者:行者123 更新时间:2023-12-03 23:23:27 25 4
gpt4 key购买 nike

在 Haskell 中,定义数据类型时可以选择自动派生
在某些情况下,但我可以推迟自动推导,甚至可以将其放入
另一个图书馆?

这是一个例子:

Haskell 中的自动推导可以节省大量时间!

module MoneyModule where

data Money = Money Int
deriving Show

现在我想使用 MoneyModule ,但我也想要一个 Read Money 的实例:
module ExternalModule where

instance Read Money where
read = error "Can't this be done automatically instead?"

但我真的更希望它自动派生,我知道如果只有 MoneyModule 作者自动派生 Read,ghc 就可以做到这一点。实例。

我知道:
  • 最好在实际MoneyModule中修复问题通过用丢失的实例修补它。
  • 拥有孤儿实例被认为是不好的。实例声明
    最好放在类型类或数据所在的模块中
    类型已定义。

  • 就我而言,我无法遵循最佳实践,因为类型类是不相关的
    到数据类型。我怀疑类型类模块和数据类型模块
    想要保存该实例,因此我正在创建第三个库,因为在某些
    您需要实例声明的应用程序。

    最佳答案

    GHC 有 StandaloneDeriving扩展,有了它,你可以

    {-# LANGUAGE StandaloneDeriving #-}
    import MoneyModule

    deriving instance Read Money

    派生许多类的实例。

    关于haskell - 声明后自动派生实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12852345/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com