DerivingStrategies
deriving strategyをGHCに明示する
defaultでは実装射の意図とは異なったderiving strategyをGHCが選択してしまうことがあって、それを避けるために使う #??
例
code:hs
{-# LANGUAGE DerivingStrategies #-}
(data|newtype) Data = Data Declaration
deriving STRATEGY (TypeClasses, Separated, By Comma)
deriving STRATEGY (Or, Separate, Clauses)
deriving (And, Even, Without, A, Strategy)
#??
ざっくり何をやっている #??
By Commaってなに
data|newtypeってなに
ここでは11個の型クラスをderivingしようとしていて、3つのグループに分けて戦略を与えてるとか?
例
code:hs
data ChristmasTreats = Candies | Chocolate | MincedPie
deriving stock (Show, Read, Eq, Ord, Enum, Bounded, Ix)
これは普通にderivingしたものと同じ意味
冗長に書いてるだけmrsekut.icon
Strategic Deriving :: Kowainik
https://github.com/kakkun61/deriving-strategies-playground
https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/compiler/deriving-strategies