driving-classes-plugin: Deriving without spelling out "deriving"

[ development, library, mit ] [ Propose Tags ]

This plugin implicitly adds "deriving" clauses to all data types in a module. See Driving.Classes to get started.


[Skip to Readme]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.1.1.0, 0.1.2.0, 0.1.3.0, 0.1.4.0
Change log CHANGELOG.md
Dependencies base (>=4.15 && <4.16), containers, ghc [details]
License MIT
Copyright 2021 Li-yao Xia
Author Li-yao Xia
Maintainer lysxia@gmail.com
Category Development
Bug tracker https://gitlab.com/Lysxia/driving-classes-plugin
Uploaded by lyxia at 2021-05-16T00:00:06Z
Distributions
Downloads 449 total (21 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user [build log]
All reported builds failed as of 2021-05-16 [all 1 reports]

Readme for driving-classes-plugin-0.1.0.0

[back to package description]

Deriving without spelling out "deriving"

This GHC plugin automatically adds deriving clauses to all data types in a module.

Example

The following module uses this plugin to derive Eq, Ord, Show for all types by default, excluding invalid instances with the NoDriving option.

{-# LANGUAGE DerivingStrategies #-}
{-# OPTIONS_GHC -fplugin=Driving.Classes #-}

module X where

{-# ANN module (Driving :: Driving
  '[ Stock '(Eq, Ord, Show)
   , NoDriving '(Eq MyEndo, Ord MyEndo, Show MyEndo)
   ]) #-}

data T = C1 | C2
data U = D1 | D2
data V = E1 | E2

newtype MyEndo a = MyEndo (a -> a)