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

Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.HSet.Modify

Synopsis

Documentation

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

Methods

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

Instances

(~) Bool False (Elem * e2 els) => HModify ((:) * e1 els) ((:) * e2 els) e1 e2 Z 
((~) Nat (S i) (Index * e1 ((:) * ex els1)), (~) Nat (S i) (Index * e2 ((:) * ex els2)), HModify els1 els2 e1 e2 i, (~) Bool False (Elem * ex els2)) => HModify ((:) * ex els1) ((:) * ex els2) e1 e2 (S i) 

type HModifiable els1 els2 e1 e2 = HModify els1 els2 e1 e2 (Index 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