Haskell 的 GeneralizedNewtypeDeriving 机制很棒;对于那些没有看过的人,写一些类似的东西
newtype SkewOptT α = SkewOptT (StateT Bool α)
deriving (Applicative, Functor, Monad, MonadTrans)
将自动生成实例,例如,
instance [overlap ok] Monad => Monad (SkewOptT )
但是,对于我的一个类型类,我想自定义一些方法。有没有办法覆盖或禁用 GeneralizedNewtypeDeriving 对这些方法所做的事情?typeclass 对一些基本的 DSL 指令进行编码,例如for
(循环)、parfor
(并行循环)、fcndef
(添加新函数)等,并且没有完美的方法将其拆分为多个 typeclass [然后自动派生一个,并手动编写另一个]。