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

Safe HaskellNone
LanguageHaskell2010

Data.HSet.Remove

Synopsis

Documentation

class HRemove els1 els2 i | els1 i -> els2 where #

Remove i's element from hset. Second argument is a resulting hset type

Methods

hremove :: forall proxy. proxy i -> HSet els1 -> HSet els2 #

Instances
HRemove (e ': els) els Z # 
Instance details

Defined in Data.HSet.Remove

Methods

hremove :: proxy Z -> HSet (e ': els) -> HSet els #

(NotElem e els2, HRemove els1 els2 i) => HRemove (e ': els1) (e ': els2) (S i :: N) # 
Instance details

Defined in Data.HSet.Remove

Methods

hremove :: proxy (S i) -> HSet (e ': els1) -> HSet (e ': els2) #

type HDeletable e els1 els2 = HRemove els1 els2 (IndexOf e els1) #

Delete element from HSet of specified type

>>> let x = (HSCons "sdf" $ HSCons 123 HSNil) :: HSet '[String, Int]
>>> hdelete (Proxy :: Proxy Int) x
HSCons ("sdf") (HSNil)
>>> hdelete (Proxy :: Proxy String) x
HSCons (123) (HSNil)

Constraints that e can be removed from els1 and els2 will be produced in result

hdelete :: forall proxy els1 els2 e. HDeletable e els1 els2 => proxy e -> HSet els1 -> HSet els2 #

Delete specific element from els1 and returns HSet with els2