-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Heterogeneous map by open unions.
--
@package union-map
@version 0.0
module Data.OpenUnion.Internal
data Union (as :: [*])
Single :: a -> Union (a : as)
Union :: Union as -> Union (a : as)
Exhausted :: Union [] -> Union []
exhaust :: Union [] -> a
(||>) :: (a -> r) -> (Union as -> r) -> (Union (a : as) -> r)
data Position (a :: *) (as :: [*])
Zero :: Position a (a : as)
Succ :: Position a as -> Position a (b : as)
class Member a as | as -> a
position :: Member a as => Position a as
-- | Lift a value into a Union.
liftU :: Member a as => a -> Union as
-- | Traversal for a specific element.
picked :: (Applicative f, Member a as) => (a -> f a) -> Union as -> f (Union as)
-- | Retrieve the value from a Union.
retractU :: Member a as => Union as -> Maybe a
-- | Lift a function into Union.
hoistU :: Member a as => (a -> a) -> Union as -> Union as
-- | Instead of Identity.
newtype Id a
Id :: a -> Id a
getId :: Id a -> a
class Include as bs
reunion :: Include as bs => Union as -> Union bs
type (∈) a as = Member a as
type (⊆) as bs = Include as bs
type (=) as bs = (Include as bs, Include bs as)
instance [overlap ok] Include '[] bs
instance [overlap ok] (Member a bs, Include as bs) => Include (a : as) bs
instance [overlap ok] Applicative Id
instance [overlap ok] Functor Id
instance [overlap ok] Member a as => Member a (b : as)
instance [overlap ok] Member a (a : as)
instance [overlap ok] (All Show r) => Show (Union r)
module Data.OpenUnion
data Union (as :: [*])
exhaust :: Union [] -> a
(||>) :: (a -> r) -> (Union as -> r) -> (Union (a : as) -> r)
-- | Traversal for a specific element.
picked :: (Applicative f, Member a as) => (a -> f a) -> Union as -> f (Union as)
-- | Lift a value into a Union.
liftU :: Member a as => a -> Union as
-- | Retrieve the value from a Union.
retractU :: Member a as => Union as -> Maybe a
-- | Lift a function into Union.
hoistU :: Member a as => (a -> a) -> Union as -> Union as
class Member a as | as -> a
class Include as bs
reunion :: Include as bs => Union as -> Union bs
type (∈) a as = Member a as
type (⊆) as bs = Include as bs
type (=) as bs = (Include as bs, Include bs as)
-- | An implementation of heterogeneous tree-map by open unions. This
-- module uses the Data.IntMap inside, see also
-- https://hackage.haskell.org/package/containers.
module Data.UnionIntMap
data UnionIntMap r
(\\) :: UnionIntMap r -> UnionIntMap r -> UnionIntMap r
(!) :: Member a as => UnionIntMap as -> Key -> a
empty :: UnionIntMap r
singleton :: Member a as => Key -> a -> UnionIntMap as
null :: UnionIntMap r -> Bool
size :: UnionIntMap r -> Int
member :: Key -> UnionIntMap r -> Bool
notMember :: Key -> UnionIntMap r -> Bool
lookup :: Member a as => Key -> UnionIntMap as -> Maybe a
lookupU :: Key -> UnionIntMap r -> Maybe (Union r)
find :: Member a as => Key -> UnionIntMap as -> a
findU :: Key -> UnionIntMap r -> Union r
findWithDefault :: Member a as => a -> Key -> UnionIntMap as -> a
insert :: Member a as => Key -> a -> UnionIntMap as -> UnionIntMap as
insertWith :: Member a as => (a -> a -> a) -> Key -> a -> UnionIntMap as -> UnionIntMap as
insertWithKey :: Member a as => (Key -> a -> a -> a) -> Key -> a -> UnionIntMap as -> UnionIntMap as
delete :: Key -> UnionIntMap as -> UnionIntMap as
adjust :: Member a as => (a -> a) -> Key -> UnionIntMap as -> UnionIntMap as
adjustWithKey :: Member a as => (Key -> a -> a) -> Key -> UnionIntMap as -> UnionIntMap as
update :: Member a as => (a -> Maybe a) -> Key -> UnionIntMap as -> UnionIntMap as
updateWithKey :: Member a as => (Key -> a -> Maybe a) -> Key -> UnionIntMap as -> UnionIntMap as
union :: UnionIntMap r -> UnionIntMap r -> UnionIntMap r
unions :: [UnionIntMap r] -> UnionIntMap r
difference :: UnionIntMap r -> UnionIntMap r -> UnionIntMap r
intersection :: UnionIntMap r -> UnionIntMap r -> UnionIntMap r
keys :: UnionIntMap r -> [Key]
rebuild :: Include r s => UnionIntMap r -> UnionIntMap s
mapU :: (Union r -> Union s) -> UnionIntMap r -> UnionIntMap s
mapWithKeyU :: (Key -> Union r -> Union s) -> UnionIntMap r -> UnionIntMap s
mapU' :: (Union r -> a) -> UnionIntMap r -> IntMap a
mapWithKeyU' :: (Key -> Union r -> a) -> UnionIntMap r -> IntMap a
filterU :: (Union r -> Bool) -> UnionIntMap r -> UnionIntMap r
filterWithKeyU :: (Key -> Union r -> Bool) -> UnionIntMap r -> UnionIntMap r
foldrU :: (Union r -> b -> b) -> b -> UnionIntMap r -> b
foldrWithKeyU :: (Key -> Union r -> b -> b) -> b -> UnionIntMap r -> b
foldlU' :: (a -> Union r -> a) -> a -> UnionIntMap r -> a
foldlWithKeyU' :: (a -> Key -> Union r -> a) -> a -> UnionIntMap r -> a
showTree :: Show (Union r) => UnionIntMap r -> String
-- | An implementation of heterogeneous tree-map by open unions. This
-- module uses the Data.Map module inside, see also
-- https://hackage.haskell.org/package/containers.
module Data.UnionMap
data UnionMap k r
(\\) :: Ord k => UnionMap k r -> UnionMap k r -> UnionMap k r
(!) :: (Ord k, Member a as) => UnionMap k as -> k -> a
empty :: UnionMap k r
singleton :: (Ord k, Member a as) => k -> a -> UnionMap k as
null :: UnionMap k r -> Bool
size :: UnionMap k r -> Int
member :: Ord k => k -> UnionMap k r -> Bool
notMember :: Ord k => k -> UnionMap k r -> Bool
lookup :: (Ord k, Member a as) => k -> UnionMap k as -> Maybe a
lookupU :: Ord k => k -> UnionMap k r -> Maybe (Union r)
find :: (Ord k, Member a as) => k -> UnionMap k as -> a
findU :: Ord k => k -> UnionMap k r -> Union r
findWithDefault :: (Ord k, Member a as) => a -> k -> UnionMap k as -> a
insert :: (Ord k, Member a as) => k -> a -> UnionMap k as -> UnionMap k as
insertWith :: (Ord k, Member a as) => (a -> a -> a) -> k -> a -> UnionMap k as -> UnionMap k as
insertWithKey :: (Ord k, Member a as) => (k -> a -> a -> a) -> k -> a -> UnionMap k as -> UnionMap k as
delete :: Ord k => k -> UnionMap k as -> UnionMap k as
adjust :: (Ord k, Member a as) => (a -> a) -> k -> UnionMap k as -> UnionMap k as
adjustWithKey :: (Ord k, Member a as) => (k -> a -> a) -> k -> UnionMap k as -> UnionMap k as
update :: (Ord k, Member a as) => (a -> Maybe a) -> k -> UnionMap k as -> UnionMap k as
updateWithKey :: (Ord k, Member a as) => (k -> a -> Maybe a) -> k -> UnionMap k as -> UnionMap k as
union :: Ord k => UnionMap k r -> UnionMap k r -> UnionMap k r
unions :: Ord k => [UnionMap k r] -> UnionMap k r
difference :: Ord k => UnionMap k r -> UnionMap k r -> UnionMap k r
intersection :: Ord k => UnionMap k r -> UnionMap k r -> UnionMap k r
keys :: UnionMap k r -> [k]
rebuild :: Include r s => UnionMap k r -> UnionMap k s
mapU :: (Union r -> Union s) -> UnionMap k r -> UnionMap k s
mapWithKeyU :: (k -> Union r -> Union s) -> UnionMap k r -> UnionMap k s
mapU' :: (Union r -> a) -> UnionMap k r -> Map k a
mapWithKeyU' :: (k -> Union r -> a) -> UnionMap k r -> Map k a
filterU :: (Union r -> Bool) -> UnionMap k r -> UnionMap k r
filterWithKeyU :: (k -> Union r -> Bool) -> UnionMap k r -> UnionMap k r
foldrU :: (Union r -> b -> b) -> b -> UnionMap k r -> b
foldrWithKeyU :: (k -> Union r -> b -> b) -> b -> UnionMap k r -> b
foldlU' :: (a -> Union r -> a) -> a -> UnionMap k r -> a
foldlWithKeyU' :: (a -> k -> Union r -> a) -> a -> UnionMap k r -> a
showTree :: (Show k, Show (Union r)) => UnionMap k r -> String