HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Modulefirst-class-families-0.8.1.0Haskell2010

Fcf.Class.Monoid

Semigroups and monoids.

  • 2 types

Pure type families

2 declarations

Nicer to use when applied explicitly.

familytype family (<>) (x :: a) (y :: a) :: a
#

Type-level semigroup composition (Data.Semigroup.<>).

Instances16<>, …
  • type (<>) 'Nothing b = bDefined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type (<>) 'EQ b = bDefined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type (<>) 'GT _b = 'GTDefined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type (<>) 'LT _b = 'LTDefined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type (<>) '(a1, a2) '(b1, b2) = '(a1 <> b1, a2 <> b2)Defined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type (<>) '(a1, a2, a3) '(b1, b2, b3) = '(a1 <> b1, a2 <> b2, a3 <> b3)Defined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type (<>) '[] ys = ysDefined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type (<>) ('Endo f) ('Endo g) = 'Endo (f <=< g)Defined in first-class-families-0.8.1.0 · Fcf.Class.Monoid.Types
  • type (<>) ('All a) ('All b) = 'All (a && b)Defined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type (<>) ('Any a) ('Any b) = 'Any (a || b)Defined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type (<>) ('Just a2) ('Just b) = 'Just (a2 <> b)Defined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type (<>) (x ': xs) ys = x ': xs <> ysDefined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type (<>) _a _b = '()Defined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type (<>) a 'EQ = aDefined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type (<>) a2 'Nothing = a2Defined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type (<>) x y = AppendSymbol x yDefined in first-class-families-0.8.1.0 · Fcf.Class.Monoid

    With base >= 4.10.0.0.

familytype family MEmpty :: a
#

Type-level monoid identity mempty.

Examples
Example1 expression
:kind! LT <> MEmptyLT <> MEmpty :: Ordering= LT
Example1 expression
:kind! MEmpty <> '(EQ, [1, 2])MEmpty <> '(EQ, [1, 2]) :: (Ordering, [Natural])= '(EQ, [1, 2])
Example1 expression
:kind! '(GT, Just '()) <> MEmpty'(GT, Just '()) <> MEmpty :: (Ordering, Maybe ())= '(GT, Just '())
Instances10MEmpty, …
  • type MEmpty = ""Defined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type MEmpty = 'Endo PureDefined in first-class-families-0.8.1.0 · Fcf.Class.Monoid.Types
  • type MEmpty = 'All 'TrueDefined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type MEmpty = 'Any 'FalseDefined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type MEmpty = 'NothingDefined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type MEmpty = 'EQDefined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type MEmpty = '(MEmpty, MEmpty)Defined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type MEmpty = '(MEmpty, MEmpty, MEmpty)Defined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type MEmpty = '()Defined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
  • type MEmpty = '[]Defined in first-class-families-0.8.1.0 · Fcf.Class.Monoid

First-class families

2 declarations

Can be composed and passed to higher-order functions.

datadata (.<>) (b :: a) (c :: a) (d :: a)
#

Type-level semigroup composition (<>).

This is the fcf-encoding of (<>). To define a new semigroup, add type instances to (<>).

Instances1Eval
  • type Eval (x .<> y) = x <> yDefined in first-class-families-0.8.1.0 · Fcf.Class.Monoid
datadata MEmpty_ (b :: a)
#

Type-level monoid identity mempty.

This is the fcf-encoding of MEmpty.

Instances1Eval
  • type Eval MEmpty_ = MEmptyDefined in first-class-families-0.8.1.0 · Fcf.Class.Monoid