HORIZON HASKELLDocslts/ghc-10.0.xfc4e5982026-10-11Search names, modules, packages, or :: a typeCtrl K

GHC 10.0.0.20260917 · lts/ghc-10.0.x · fc4e598 · 2026-10-11

Moduleenvparse-0.6.0Haskell2010

Env.Generic

Using the Generic facility, this module can derive Parsers automatically.

If you have a simple record:

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE MultiParamTypeClasses #-}

import Env
import Env.Generic

data Hello = Hello
  { name  :: String
  , count :: Int
  , quiet :: Bool
  } deriving (Show, Eq, Generic)

instance Record Error Hello

main :: IO ()
main = do
  hello <- Env.parse (header "envparse example") record
  print (hello :: Hello)

The generic implementation of the record method translates named fields to field parsers:

% NAME=bob COUNT=3 runhaskell -isrc example/Generic0.hs
Hello {name = "bob", count = 3, quiet = False}

If you want to adorn the ugly default help message, augment the fields with descriptions:

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeOperators #-}

import Env
import Env.Generic

data Hello = Hello
  { name  :: String ? "Whom shoud I greet?"
  , count :: Int    ? "How many times to greet them?"
  , quiet :: Bool   ? "Should I be quiet instead?"
  } deriving (Show, Eq, Generic)

instance Record Error Hello

main :: IO ()
main = do
  hello <- Env.parse (header "envparse example") record
  print (hello :: Hello)
% runhaskell -isrc example/Generic1.hs
envparse example

Available environment variables:

  COUNT                  How many times to greet them?
  NAME                   Whom shoud I greet?
  QUIET                  Should I be quiet instead?

Parsing errors:

  COUNT is unset
  NAME is unset

Note that this has an effect of wrapping the values in the Help constructor:

% NAME=bob COUNT=3 QUIET=YES runhaskell -isrc example/Generic1.hs
Hello {name = Help {unHelp = "bob"}, count = Help {unHelp = 3}, quiet = Help {unHelp = True}}
  • 1 type
  • 3 classes
  • Packageenvparse-0.6.0
  • Exports4
  • LanguageHaskell2010
  • LicenceBSD-3-Clause
  • SourceGeneric.hs
classclass Record e a where
#

Given a Record e a instance, a value of the type a can be parsed from the environment. If the parsing fails, a value of an error type e is returned.

The record method has a default implementation for any type that has a Generic instance. If you need to choose a concrete type for e, the default error type Error is a good candidate. Otherwise, the features you'll use in your parsers will naturally guide GHC to compute the set of required constraints on e.

Methods

classclass Field e a where
#

Given a Field e a instance, a value of the type a can be parsed from an environment variable. If the parsing fails, a value of an error type e is returned.

The field method has a default implementation for any type that has a Read instance. If you need to choose a concrete type for e, the default error type Error is a good candidate. Otherwise, the features you'll use in your parsers will naturally guide GHC to compute the set of required constraints on e.

The annotated instances do not use the default implementation.

Methods

Instances19Field, …
newtypenewtype (?) a (tag :: k)
#

A field annotation.

If you annotate a record field with a Symbol literal (that is, a statically known type level string) the derivation machinery will use the literal in the help message.

Please remember that the values of the annotated fields are wrapped in the Help constructor.

Constructors

Instances6Field, Functor, Foldable, Traversable, Eq, Show
  • (KnownSymbol tag, Field e a) => Field e (a ? tag)Defined in envparse-0.6.0 · Env.Generic

    Augments the underlying field parser with the help message.

  • Functor ((?) a)Defined in envparse-0.6.0 · Env.Generic
  • Foldable ((?) a)Defined in envparse-0.6.0 · Env.Generic
  • Traversable ((?) a)Defined in envparse-0.6.0 · Env.Generic
  • Eq a => Eq (a ? tag)Defined in envparse-0.6.0 · Env.Generic
  • Show a => Show (a ? tag)Defined in envparse-0.6.0 · Env.Generic
classclass Generic a where
#

Representable types of kind *. This class is derivable in GHC with the DeriveGeneric flag on.

A Generic instance must satisfy the following laws:

from . to ≡ Prelude.id
to . from ≡ Prelude.id
Instances197Generic, …
  • Generic CCFlagsDefined in base-4.23.0.0 · GHC.RTS.Flags
  • Generic ConcFlagsDefined in base-4.23.0.0 · GHC.RTS.Flags
  • Generic DebugFlagsDefined in base-4.23.0.0 · GHC.RTS.Flags
  • Generic DoCostCentresDefined in base-4.23.0.0 · GHC.RTS.Flags
  • Generic DoHeapProfileDefined in base-4.23.0.0 · GHC.RTS.Flags
  • Generic DoTraceDefined in base-4.23.0.0 · GHC.RTS.Flags
  • Generic GCFlagsDefined in base-4.23.0.0 · GHC.RTS.Flags
  • Generic GiveGCStatsDefined in base-4.23.0.0 · GHC.RTS.Flags
  • Generic HpcFlagsDefined in base-4.23.0.0 · GHC.RTS.Flags
  • Generic MiscFlagsDefined in base-4.23.0.0 · GHC.RTS.Flags
  • Generic ParFlagsDefined in base-4.23.0.0 · GHC.RTS.Flags
  • Generic ProfFlagsDefined in base-4.23.0.0 · GHC.RTS.Flags
  • Generic RTSFlagsDefined in base-4.23.0.0 · GHC.RTS.Flags
  • Generic TickyFlagsDefined in base-4.23.0.0 · GHC.RTS.Flags
  • Generic TraceFlagsDefined in base-4.23.0.0 · GHC.RTS.Flags
  • Generic GCDetailsDefined in base-4.23.0.0 · GHC.Stats
  • Generic RTSStatsDefined in base-4.23.0.0 · GHC.Stats
  • Generic VoidDefined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic ByteOrderDefined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic ClosureTypeDefined in ghc-internal-10.0.0 · GHC.Internal.ClosureTypes
  • Generic AllDefined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic AnyDefined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic VersionDefined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic FingerprintDefined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic ForeignSrcLangDefined in ghc-internal-10.0.0 · GHC.Internal.ForeignSrcLang
  • Generic AssociativityDefined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic DecidedStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic FixityDefined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic SourceStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic SourceUnpackednessDefined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic PrimTypeDefined in ghc-internal-10.0.0 · GHC.Internal.Heap.Closures
  • Generic TsoFlagsDefined in ghc-internal-10.0.0 · GHC.Internal.Heap.Closures
  • Generic WhatNextDefined in ghc-internal-10.0.0 · GHC.Internal.Heap.Closures
  • Generic WhyBlockedDefined in ghc-internal-10.0.0 · GHC.Internal.Heap.Closures
  • Generic StgInfoTableDefined in ghc-internal-10.0.0 · GHC.Internal.Heap.InfoTable.Types
  • Generic CostCentreDefined in ghc-internal-10.0.0 · GHC.Internal.Heap.ProfInfo.Types
  • Generic CostCentreStackDefined in ghc-internal-10.0.0 · GHC.Internal.Heap.ProfInfo.Types
  • Generic IndexTableDefined in ghc-internal-10.0.0 · GHC.Internal.Heap.ProfInfo.Types
  • Generic StgTSOProfInfoDefined in ghc-internal-10.0.0 · GHC.Internal.Heap.ProfInfo.Types
  • Generic ExitCodeDefined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic ExtensionDefined in ghc-internal-10.0.0 · GHC.Internal.LanguageExtensions
  • Generic CCFlagsDefined in ghc-internal-10.0.0 · GHC.Internal.RTS.Flags
  • Generic ConcFlagsDefined in ghc-internal-10.0.0 · GHC.Internal.RTS.Flags
  • Generic DebugFlagsDefined in ghc-internal-10.0.0 · GHC.Internal.RTS.Flags
  • Generic DoCostCentresDefined in ghc-internal-10.0.0 · GHC.Internal.RTS.Flags
  • Generic DoHeapProfileDefined in ghc-internal-10.0.0 · GHC.Internal.RTS.Flags
  • Generic DoTraceDefined in ghc-internal-10.0.0 · GHC.Internal.RTS.Flags
  • Generic GCFlagsDefined in ghc-internal-10.0.0 · GHC.Internal.RTS.Flags
  • Generic GiveGCStatsDefined in ghc-internal-10.0.0 · GHC.Internal.RTS.Flags
  • Generic HpcFlagsDefined in ghc-internal-10.0.0 · GHC.Internal.RTS.Flags
  • Generic MiscFlagsDefined in ghc-internal-10.0.0 · GHC.Internal.RTS.Flags
  • Generic ParFlagsDefined in ghc-internal-10.0.0 · GHC.Internal.RTS.Flags
  • Generic ProfFlagsDefined in ghc-internal-10.0.0 · GHC.Internal.RTS.Flags
  • Generic RTSFlagsDefined in ghc-internal-10.0.0 · GHC.Internal.RTS.Flags
  • Generic TickyFlagsDefined in ghc-internal-10.0.0 · GHC.Internal.RTS.Flags
  • Generic TraceFlagsDefined in ghc-internal-10.0.0 · GHC.Internal.RTS.Flags
  • Generic SrcLocDefined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic GCDetailsDefined in ghc-internal-10.0.0 · GHC.Internal.Stats
  • Generic RTSStatsDefined in ghc-internal-10.0.0 · GHC.Internal.Stats
  • Generic AnnLookupDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic AnnTargetDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic BangDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic BndrVisDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic BodyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic BytesDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic CallconvDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic ClauseDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic ConDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic DecDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic DecidedStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic DerivClauseDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic DerivStrategyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic DocLocDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic ExpDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic FamilyResultSigDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic FixityDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic FixityDirectionDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic ForeignDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic FunDepDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic GuardDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic InfoDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic InjectivityAnnDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic InlineDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic LitDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic LocDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic MatchDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic ModNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic ModuleDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic ModuleInfoDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic NameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic NameFlavourDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic NameSpaceDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic NamespaceSpecifierDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic OccNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic OverlapDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic PatDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic PatSynArgsDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic PatSynDirDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic PhasesDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic PkgNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic PragmaDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic RangeDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic RoleDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic RuleBndrDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic RuleMatchDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic SafetyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic SourceStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic SourceUnpackednessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic SpecificityDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic StmtDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic TyLitDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic TySynEqnDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic TypeDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic TypeFamilyHeadDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic BoolDefined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic OrderingDefined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic GeneralCategoryDefined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic ModeDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Generic StyleDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Generic TextDetailsDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Generic DocDefined in pretty-1.1.3.6 · Text.PrettyPrint.HughesPJ
  • Generic ()Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (Complex a)Defined in base-4.23.0.0 · Data.Complex
  • Generic (First a)Defined in base-4.23.0.0 · Data.Semigroup
  • Generic (Last a)Defined in base-4.23.0.0 · Data.Semigroup
  • Generic (Max a)Defined in base-4.23.0.0 · Data.Semigroup
  • Generic (Min a)Defined in base-4.23.0.0 · Data.Semigroup
  • Generic (WrappedMonoid m)Defined in base-4.23.0.0 · Data.Semigroup
  • Generic (SCC vertex)Defined in containers-0.8 · Data.Graph
  • Generic (Digit a)Defined in containers-0.8 · Data.Sequence.Internal
  • Generic (Elem a)Defined in containers-0.8 · Data.Sequence.Internal
  • Generic (FingerTree a)Defined in containers-0.8 · Data.Sequence.Internal
  • Generic (Node a)Defined in containers-0.8 · Data.Sequence.Internal
  • Generic (ViewL a)Defined in containers-0.8 · Data.Sequence.Internal
  • Generic (ViewR a)Defined in containers-0.8 · Data.Sequence.Internal
  • Generic (PostOrder a)Defined in containers-0.8 · Data.Tree
  • Generic (Tree a)Defined in containers-0.8 · Data.Tree
  • Generic (NonEmpty a)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (Identity a)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (First a)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (Last a)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (Down a)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (Dual a)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (Endo a)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (Product a)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (Sum a)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (ZipList a)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (Par1 p)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (GenClosure b)Defined in ghc-internal-10.0.0 · GHC.Internal.Heap.Closures
  • Generic (GenStackField b)Defined in ghc-internal-10.0.0 · GHC.Internal.Heap.Closures
  • Generic (GenStackFrame b)Defined in ghc-internal-10.0.0 · GHC.Internal.Heap.Closures
  • Generic (GenStgStackClosure b)Defined in ghc-internal-10.0.0 · GHC.Internal.Heap.Closures
  • Generic (Maybe a)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (TyVarBndr flag)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax
  • Generic (Doc a)Defined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Generic (a)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic [a]Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (WrappedMonad m a)Defined in base-4.23.0.0 · Control.Applicative
  • Generic (Arg a b)Defined in base-4.23.0.0 · Data.Semigroup
  • Generic (Either a b)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (Proxy t)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (U1 p)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (V1 p)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (a, b)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (WrappedArrow a b c)Defined in base-4.23.0.0 · Control.Applicative
  • Generic (Kleisli m a b)Defined in ghc-internal-10.0.0 · GHC.Internal.Control.Arrow
  • Generic (Const a b)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (Ap f a)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (Alt f a)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (Rec1 f p)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (URec Char p)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (URec Double p)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (URec Float p)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (URec Int p)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (URec Word p)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (URec (Ptr ()) p)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (a, b, c)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (Product f g a)Defined in base-4.23.0.0 · Data.Functor.Product
  • Generic (Sum f g a)Defined in base-4.23.0.0 · Data.Functor.Sum
  • Generic (K1 i c p)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic ((:*:) f g p)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic ((:+:) f g p)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (a, b, c, d)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (Compose f g a)Defined in base-4.23.0.0 · Data.Functor.Compose
  • Generic (M1 i c f p)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic ((:.:) f g p)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f, g)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f, g, h)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f, g, h, i)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f, g, h, i, j)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f, g, h, i, j, k)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f, g, h, i, j, k, l)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f, g, h, i, j, k, l, m)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f, g, h, i, j, k, l, m, n)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)Defined in ghc-internal-10.0.0 · GHC.Internal.Generics