Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
- newtype CaseTypeable r xs = CaseTypeable (forall x. Typeable x => x -> r)
- newtype CaseTypeable' xs = CaseTypeable' (forall x. Typeable x => x -> x)
Documentation
newtype CaseTypeable r xs Source #
This handler stores a polymorphic function for all Typeables.
This is an example of how to define and instance of Case
for
polymorphic function into a specified result type.
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"]
CaseTypeable (forall x. Typeable x => x -> r) |
Reiterate (CaseTypeable r) xs Source # | |
Typeable Type x => Case (CaseTypeable r) ((:) Type x xs) Source # | |
type CaseResult * Type (CaseTypeable r) x Source # | |
newtype CaseTypeable' xs Source #
This handler stores a polymorphic function for all Typeables.
This is an example of how to define and instance of Case
for
polymorphic function that doesn't change the type
CaseTypeable' (forall x. Typeable x => x -> x) |
Reiterate CaseTypeable' xs Source # | |
Typeable Type x => Case CaseTypeable' ((:) Type x xs) Source # | |
type CaseResult * Type CaseTypeable' x Source # | |