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 :: *
- class Assoc a where
  - data AssocD a :: *
  - type AssocT a :: *
- type family Bar b
- type family a <> b :: 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

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

data Y

Doc for: data Y

Instances

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

data Z

Doc for: data Z

Constructors

ZA |
ZB |

Instances

data Bat Z where BatZ1 :: Z -> Bat Z ZA BatZ2 :: { batx :: X baty :: Y } -> Bat Z ZB | Doc for: data instance Bat Z

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 = X | Doc for: type instance Foo Y = X
type Foo * X = Y | Doc for: type instance Foo X = Y

data family Bat a :: *

Doc for: data family Bat a

Instances

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

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
Assoc * X | Doc for: instance Assoc X

type family Bar b

Doc for: type family Bar b

Equations

Bar X = X |
Bar y = Y |

type family a <> b :: k

Instances

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

class a >< b

Instances

(><) X XX XXX |