type-set-0.1.0.0: Type set
Safe HaskellNone
LanguageHaskell2010

Data.OneOrMore

Synopsis

Type

data OneOrMore (a :: Set Type) Source #

Property

Basic Property

class Projectable (as :: Set Type) a Source #

Minimal complete definition

project

Instances

Instances details
Projectable ('Nil :: Set Type) a Source # 
Instance details

Defined in Data.OneOrMore.Internal

Methods

project :: OneOrMore ('Nil :: Set Type) -> Maybe a Source #

class Insertable a (as :: Set Type) (as' :: Set Type) Source #

Minimal complete definition

(>-.)

Expandable and Collapsable

class Expandable (as :: Set Type) (as' :: Set Type) Source #

Minimal complete definition

expand

class Collapsable (as :: Set Type) (as' :: Set Type) Source #

Minimal complete definition

collapse

Instances

Instances details
Collapsable ('Nil :: Set Type) ('Nil :: Set Type) Source # 
Instance details

Defined in Data.OneOrMore.Internal

Mergeable

class Mergeable (as :: Set Type) (as' :: Set Type) (mrg :: Set Type) Source #

Minimal complete definition

merge_

Instances

Instances details
Mergeable ('Nil :: Set Type) ('Nil :: Set Type) ('Nil :: Set Type) Source # 
Instance details

Defined in Data.OneOrMore.Internal

Methods

merge_ :: OneOrMore ('Nil :: Set Type) -> OneOrMore ('Nil :: Set Type) -> OneOrMore ('Nil :: Set Type)

class Selectable a where Source #

Methods

select :: a -> a -> a Source #

Instances

Instances details
Ord a => Selectable a Source # 
Instance details

Defined in Data.OneOrMore.Internal

Methods

select :: a -> a -> a Source #

Function

Single Type

pattern Singleton :: a -> OneOrMore (Singleton a) Source #

Multiple Type

(>-) :: forall a (as :: Set Type). Insertable a as (a :- as) => a -> OneOrMore as -> OneOrMore (a :- as) infixr 5 Source #

Expand and Collapse

expand :: Expandable as as' => OneOrMore as -> OneOrMore as' Source #

Merge

merge :: forall (as :: Set Type) (as' :: Set Type). Mergeable as as' (as :+: as') => OneOrMore as -> OneOrMore as' -> OneOrMore (as :+: as') Source #

merge' :: forall (as :: Set Type) (as' :: Set Type). (Mergeable as as' (as :+: as'), Expandable as (as :+: as'), Expandable as' (as :+: as')) => Maybe (OneOrMore as) -> Maybe (OneOrMore as') -> Maybe (OneOrMore (as :+: as')) Source #