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 #

Methods

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

Instances
NotElem e2 els => HModify (e1 ': els) (e2 ': els) e1 e2 Z # 
Instance details

Defined in Data.HSet.Modify

Methods

hmodify :: (e1 -> e2) -> HSet (e1 ': els) -> HSet (e2 ': els) #

(S i ~ IndexOf e1 (ex ': els1), S i ~ IndexOf e2 (ex ': els2), HModify els1 els2 e1 e2 i, NotElem ex els2) => HModify (ex ': els1) (ex ': els2) e1 e2 (S i) # 
Instance details

Defined in Data.HSet.Modify

Methods

hmodify :: (e1 -> e2) -> HSet (ex ': els1) -> HSet (ex ': els2) #

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

Check that we can turn one hset to another

type HMonoModifiable els e = HModifiable els els e e #

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 #

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 #

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

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

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