hset-2.2.0: Primitive list with elements of unique types.

Safe HaskellNone
LanguageHaskell2010

Data.HSet.Modify

Synopsis

Documentation

class (i ~ IndexOf e1 els1, i ~ IndexOf e2 els2) => HModify els1 els2 e1 e2 i | els1 els2 e2 i -> e1, els1 els2 e1 i -> e2, els1 e1 e2 i -> els2, els2 e1 e2 i -> els1 where Source

Methods

hmodify :: (e1 -> e2) -> HSet els1 -> HSet els2 Source

Instances

NotElem * e2 els => HModify ((:) * e1 els) ((:) * e2 els) e1 e2 Z Source 
((~) N (S i) (IndexOf * e1 ((:) * ex els1)), (~) N (S i) (IndexOf * e2 ((:) * ex els2)), HModify els1 els2 e1 e2 i, NotElem * ex els2) => HModify ((:) * ex els1) ((:) * ex els2) e1 e2 (S i) Source 

type HModifiable els1 els2 e1 e2 = HModify els1 els2 e1 e2 (IndexOf e1 els1) Source

Check that we can turn one hset to another

type HMonoModifiable els e = HModifiable els els e e Source

Helper type infering that hset els contains element of type e and can be modified

hMonoModify :: HMonoModifiable els e => (e -> e) -> HSet els -> HSet els Source

Like hmodify but do not change the hset's type

hModifyTagged :: forall proxy l els1 els2 e1 e2. HModifiable els1 els2 (Tagged l e1) (Tagged l e2) => proxy l -> (e1 -> e2) -> HSet els1 -> HSet els2 Source

hMonoModifyTagged :: forall proxy l els e. HMonoModifiable els (Tagged l e) => proxy l -> (e -> e) -> HSet els -> HSet els Source

hUntag :: forall proxy els1 els2 l e. HModifiable els1 els2 (Tagged l e) e => proxy l -> proxy e -> HSet els1 -> HSet els2 Source

hTag :: forall proxy els1 els2 l e. HModifiable els1 els2 e (Tagged l e) => proxy l -> proxy e -> HSet els1 -> HSet els2 Source