https://github.com/totbwf/omit-generics
Omit fields for instance deriving
https://github.com/totbwf/omit-generics
ghc-generics haskell
Last synced: about 1 month ago
JSON representation
Omit fields for instance deriving
- Host: GitHub
- URL: https://github.com/totbwf/omit-generics
- Owner: TOTBWF
- License: bsd-3-clause
- Created: 2020-06-05T01:24:37.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2020-06-05T01:39:22.000Z (almost 5 years ago)
- Last Synced: 2025-03-28T14:21:44.490Z (2 months ago)
- Topics: ghc-generics, haskell
- Language: Haskell
- Size: 6.84 KB
- Stars: 37
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.org
- Changelog: ChangeLog.md
- License: LICENSE
Awesome Lists containing this project
README
* omit-generics
=omit-generics= aims to make deriving ~Eq~ and ~Ord~ instances
easier by giving the programmer control over what fields to ignore.This is best explained by an example:
#+BEGIN_SRC haskell :multi-line t
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DerivingVia #-}import GHC.Generics
import GHC.Generics.Omitdata Person = Person { name :: String, age :: Int, metadata :: [String] }
deriving stock Generic
deriving Eq via (Omit '["age", "metadata"] Person)
#+END_SRCNow, when we compare ~Person~ for equality, the ~age~ and ~metadata~
fields are ignored!#+BEGIN_SRC haskell
Person "Steve" 43 ["loves cats"] == Person "Steve" 1 ["loves dogs", "is a baby"]
> True
#+END_SRC