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

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

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


[Skip to Readme]

Properties

Versions 0.1.0.0, 0.1.0.0, 0.1.1.0, 0.1.2.0, 0.1.3.0
Change log CHANGELOG.md
Dependencies base (==4.15.*), 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-15T23:56:22Z

Modules

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


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)