gpt4 book ai didi

haskell - 有什么方法可以自定义 GeneralizedNewtypeDeriving 实例的一种或两种方法?

转载 作者:行者123 更新时间:2023-12-01 01:21:55 24 4
gpt4 key购买 nike

Haskell 的 GeneralizedNewtypeDeriving 机制很棒;对于那些没有看过的人,写一些类似的东西

newtype SkewOptT 𝔪 α = SkewOptT (StateT Bool 𝔪 α)
deriving (Applicative, Functor, Monad, MonadTrans)

将自动生成实例,例如,
instance [overlap ok] Monad 𝔪 => Monad (SkewOptT 𝔪)

但是,对于我的一个类型类,我想自定义一些方法。有没有办法覆盖或禁用 GeneralizedNewtypeDeriving 对这些方法的作用? typeclass 编码一些基本的 DSL 指令,如 for (一个循环), parfor (并行循环), fcndef (添加一个新函数)等,并没有一种完美的方法可以将其拆分为多个类型类[然后自动派生一个,然后手动编写另一个]。

最佳答案

不,这是不可能的。 Default signatures (GHC 7.2 中的新功能)可能会帮助您在这里拆分类;由于您可以根据其他类型类定义方法的默认实现,因此您可能能够派生一些实例,并且只在另一个类的实例中填写要覆盖的方法。

其实除了ShowRead , newtype deriving 只是检查一些前提条件是否满足,然后直接重用字典(因为 newtypes 与底层类型具有相同的表示);见 the documentation了解更多详情。

关于haskell - 有什么方法可以自定义 GeneralizedNewtypeDeriving 实例的一种或两种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8695722/

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