data-diverse-4.6.0.0: Extensible records and polymorphic variants.

Safe HaskellSafe
LanguageHaskell2010

Data.Diverse.Case

Synopsis

Documentation

class Case c (xs :: [Type]) where Source #

This class allows defining handlers that can handle the Head type in the xs typelist. In conjunction with Reiterate, you can define handlers that can handle all the types in the xs typelist.

See Data.Diverse.CaseFunc and Data.Diverse.Cases.

Minimal complete definition

case'

Methods

case' :: c xs -> Head xs -> CaseResult c (Head xs) Source #

Return the handler/continuation when x is observed.

Instances
k x => Case (CaseFunc' k) (x ': xs) Source # 
Instance details

Defined in Data.Diverse.CaseFunc

Methods

case' :: CaseFunc' k (x ': xs) -> Head (x ': xs) -> CaseResult (CaseFunc' k) (Head (x ': xs)) Source #

UniqueMember (Head xs -> r) fs => Case (Cases fs r) xs Source #

UndecidableInstances because fs appers more often.

Instance details

Defined in Data.Diverse.Cases

Methods

case' :: Cases fs r xs -> Head xs -> CaseResult (Cases fs r) (Head xs) Source #

k x => Case (CaseFunc k r) (x ': xs) Source # 
Instance details

Defined in Data.Diverse.CaseFunc

Methods

case' :: CaseFunc k r (x ': xs) -> Head (x ': xs) -> CaseResult (CaseFunc k r) (Head (x ': xs)) Source #

MemberAt n (Head xs -> r) fs => Case (CasesN fs r n) xs Source #

UndecidableInstances because fs appears more often.

Instance details

Defined in Data.Diverse.Cases

Methods

case' :: CasesN fs r n xs -> Head xs -> CaseResult (CasesN fs r n) (Head xs) Source #

(k (f x), k1 f, k0 x) => Case (CaseFunc1' k k1 k0) (f x ': xs) Source # 
Instance details

Defined in Data.Diverse.CaseFunc

Methods

case' :: CaseFunc1' k k1 k0 (f x ': xs) -> Head (f x ': xs) -> CaseResult (CaseFunc1' k k1 k0) (Head (f x ': xs)) Source #

(k (f x), k1 f, k0 x) => Case (CaseFunc1 k k1 k0 r) (f x ': xs) Source # 
Instance details

Defined in Data.Diverse.CaseFunc

Methods

case' :: CaseFunc1 k k1 k0 r (f x ': xs) -> Head (f x ': xs) -> CaseResult (CaseFunc1 k k1 k0 r) (Head (f x ': xs)) Source #