packages feed

records-edsl-core-0.1.0: Records/EDSL/Deriving/Stock.hs

module Records.EDSL.Deriving.Stock where

import Language.Haskell.TH qualified as TH
import Records.EDSL.Deriving.Type
import Records.EDSL.Description
import Relude

deriveEq :: Deriver
deriveEq = deriver #stock_Eq \RecordDesc {typeName} ->
  [d|deriving stock instance Eq $(TH.conT typeName)|]

deriveOrd :: Deriver
deriveOrd = deriver #stock_Ord \RecordDesc {typeName} ->
  [d|deriving stock instance Ord $(TH.conT typeName)|]

deriveShow :: Deriver
deriveShow = deriver #stock_Show \RecordDesc {typeName} ->
  [d|deriving stock instance Show $(TH.conT typeName)|]

deriveGeneric :: Deriver
deriveGeneric = deriver #stock_Generic \RecordDesc {typeName} ->
  [d|deriving stock instance Generic $(TH.conT typeName)|]