TypeFamilies

Safe Haskell | Safe

TypeFamilies

Description

Doc for: module TypeFamilies

Synopsis

- data X
  - = X
  - | XX
  - | XXX
- data Y
- data Z
  - = ZA
  - | ZB
- class Test a
- type family Foo a :: k
- data family Bat (a :: k) :: *
- class Assoc a where
  - data AssocD a :: *
  - type AssocT a :: *
- type family Bar b where ...
- type family (a :: k) <> (b :: k) :: k
- class a >< b

# Documentation

data X #

Doc for: data X

Constructors

X | Doc for: X
XX | Doc for: XX
XXX | Doc for: XXX

Instances

(><) X XX XXX # |
Assoc * X # | Doc for: instance Assoc X
Associated Types data AssocD X (a :: X) :: * # type AssocT X (a :: X) :: * #
Test * X # | Doc for: instance Test X
type Foo X # |
type Foo X = Y
type (<>) X XXX XX # |
type (<>) X XXX XX = X
data AssocD * X # |
data AssocD * X = AssocX
type AssocT * X # |
type AssocT * X = Foo * X
data Bat * X # | Doc for: data instance Bat X
data Bat * X = BatX X | BatXX { aaa :: X bbb :: Y }
type Foo * X # |
type Foo * X = Y
type (<>) * X a # |
type (<>) * X a = X

data Y #

Doc for: data Y

Instances

Assoc * Y # | Doc for: instance Assoc Y
Associated Types data AssocD Y (a :: Y) :: * # type AssocT Y (a :: Y) :: * #
Test * Y # | Doc for: instance Test Y
data Bar Y # |
data Bar Y
data AssocD * Y # |
data AssocD * Y = AssocY
type AssocT * Y # |
type AssocT * Y = Bat * Y
data Bat * Y # | Doc for: data instance Bat Y
data Bat * Y = BatY Y
type Foo * Y # |
type Foo * Y = X
type (<>) * Y a # |
type (<>) * Y a = a

data Z #

Doc for: data Z

Constructors

ZA |
ZB |

Instances

data Bat Z # | Doc for: data instance Bat Z
data Bat Z where BatZ1 :: Bat Z ZA BatZ2 :: Bat Z ZB

class Test a #

Doc for: class Test a

Instances

Test * Y # | Doc for: instance Test Y
Test * X # | Doc for: instance Test X

type family Foo a :: k #

Doc for: type family Foo a

Instances

type Foo * Y # |
type Foo * Y = X
type Foo * X # |
type Foo * X = Y

data family Bat (a :: k) :: * #

Doc for: data family Bat a

Instances

data Bat Z # | Doc for: data instance Bat Z
data Bat Z where BatZ1 :: Bat Z ZA BatZ2 :: Bat Z ZB
data Bat * Y # | Doc for: data instance Bat Y
data Bat * Y = BatY Y
data Bat * X # | Doc for: data instance Bat X
data Bat * X = BatX X | BatXX { aaa :: X bbb :: Y }

class Assoc a #

Doc for: class Assoc a

Associated Types

data AssocD a :: * #

Doc for: data AssocD a

type AssocT a :: * #

Doc for: type AssocT a

Instances

Assoc * Y # | Doc for: instance Assoc Y
Associated Types data AssocD Y (a :: Y) :: * # type AssocT Y (a :: Y) :: * #
Assoc * X # | Doc for: instance Assoc X
Associated Types data AssocD X (a :: X) :: * # type AssocT X (a :: X) :: * #

type family Bar b where ... #

Doc for: type family Bar b

Equations

Bar X = X |
Bar y = Y |

type family (a :: k) <> (b :: k) :: k #

Instances

type (<>) X XXX XX # |
type (<>) X XXX XX = X
type (<>) * Y a # |
type (<>) * Y a = a
type (<>) * X a # |
type (<>) * X a = X

class a >< b #

Instances

(><) X XX XXX # |