Safe Haskell | None |
---|---|
Language | Haskell2010 |
Data.OneOfThem
Synopsis
- data OneOfThem (a :: Set Type)
- pattern Singleton :: a -> OneOfThem (Singleton a)
- unSingleton :: OneOfThem (Singleton a) -> a
- class Projectable (as :: Set Type) a
- project :: Projectable as a => OneOfThem as -> Maybe a
- class Expandable (as :: Set Type) (as' :: Set Type)
- (>-) :: forall a (as :: Set Type). (Expandable (Singleton a) (a :- as), Expandable as (a :- as)) => a -> [OneOfThem as] -> [OneOfThem (a :- as)]
- expand :: Expandable as as' => OneOfThem as -> OneOfThem as'
- data OneOfThemFun (as :: Set Type) b
- apply :: Applyable as => OneOfThemFun as b -> OneOfThem as -> b
- pattern SingletonFun :: (a -> b) -> OneOfThemFun (Singleton a) b
- class InsertableFun a (as :: Set Type) (as' :: Set Type)
- (>--) :: forall a (as :: Set Type) b. InsertableFun a as (a :- as) => (a -> b) -> OneOfThemFun as b -> OneOfThemFun (a :- as) b
- class MergeableFun (as :: Set Type) (as' :: Set Type) (mrg :: Set Type)
- mergeFun :: forall (as :: Set Type) (as' :: Set Type) b. MergeableFun as as' (as :+: as') => OneOfThemFun as b -> OneOfThemFun as' b -> OneOfThemFun (as :+: as') b
OneOfThem
Type
Single
unSingleton :: OneOfThem (Singleton a) -> a Source #
Multiple
Project
class Projectable (as :: Set Type) a Source #
Minimal complete definition
Expand
(>-) :: forall a (as :: Set Type). (Expandable (Singleton a) (a :- as), Expandable as (a :- as)) => a -> [OneOfThem as] -> [OneOfThem (a :- as)] infixr 5 Source #
OneOfThemFun
Type and Apply
data OneOfThemFun (as :: Set Type) b Source #
apply :: Applyable as => OneOfThemFun as b -> OneOfThem as -> b Source #
Single
pattern SingletonFun :: (a -> b) -> OneOfThemFun (Singleton a) b Source #
Insert
(>--) :: forall a (as :: Set Type) b. InsertableFun a as (a :- as) => (a -> b) -> OneOfThemFun as b -> OneOfThemFun (a :- as) b infixr 5 Source #
Merge
class MergeableFun (as :: Set Type) (as' :: Set Type) (mrg :: Set Type) Source #
Minimal complete definition
mergeFun_
mergeFun :: forall (as :: Set Type) (as' :: Set Type) b. MergeableFun as as' (as :+: as') => OneOfThemFun as b -> OneOfThemFun as' b -> OneOfThemFun (as :+: as') b Source #