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

Safe HaskellSafe
LanguageHaskell2010

Data.Diverse.CaseTypeable

Synopsis

Documentation

newtype CaseTypeable xs r Source #

This handler stores a polymorphic function for all Typeables.

let y = pick (5 :: Int) :: Which '[Int, Bool]
switch y (CaseTypeable (show . typeRep . (pure @Proxy))) `shouldBe` Int
let x = (5 :: Int) ./ False ./ 'X' ./ Just 'O' ./ (6 :: Int) ./ Just 'A' ./ nul
afoldr (:) [] (forMany (CaseTypeable (show . typeRep . (pure @Proxy))) x) `shouldBe`
    ["Int", "Bool", "Char", "Maybe Char", "Int", "Maybe Char"]

Constructors

CaseTypeable (forall x. Typeable x => x -> r) 

Instances

Typeable Type (Head Type xs) => Case CaseTypeable xs r Source # 

Methods

case' :: CaseTypeable xs r -> Head Type xs -> r Source #

Reiterate * CaseTypeable xs Source # 

Methods

reiterate :: xs xs r -> xs (Tail Type xs) r Source #