vessel-0.1.0.0: Functor-parametric containers
Safe HaskellNone
LanguageHaskell2010

Data.Vessel.SubVessel

Synopsis

Documentation

data SubVesselKey k (f :: (* -> *) -> *) (g :: (* -> *) -> *) where Source #

Constructors

SubVesselKey :: k -> SubVesselKey k f f 

Instances

Instances details
FromJSON k => FromJSON (Some (SubVesselKey k v)) Source # 
Instance details

Defined in Data.Vessel.SubVessel

ArgDict (c :: ((Type -> Type) -> Type) -> Constraint) (SubVesselKey k f :: ((Type -> Type) -> Type) -> Type) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Associated Types

type ConstraintsFor (SubVesselKey k f) c #

Methods

argDict :: forall (a :: k0). ConstraintsFor (SubVesselKey k f) c => SubVesselKey k f a -> Dict (c a) #

Ord k => GCompare (SubVesselKey k v :: ((Type -> Type) -> Type) -> Type) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Methods

gcompare :: forall (a :: k0) (b :: k0). SubVesselKey k v a -> SubVesselKey k v b -> GOrdering a b #

Eq k => GEq (SubVesselKey k v :: ((Type -> Type) -> Type) -> Type) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Methods

geq :: forall (a :: k0) (b :: k0). SubVesselKey k v a -> SubVesselKey k v b -> Maybe (a :~: b) #

Show k => GShow (SubVesselKey k f :: ((Type -> Type) -> Type) -> Type) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Methods

gshowsPrec :: forall (a :: k0). Int -> SubVesselKey k f a -> ShowS #

Show k => Show (SubVesselKey k f g) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Methods

showsPrec :: Int -> SubVesselKey k f g -> ShowS #

show :: SubVesselKey k f g -> String #

showList :: [SubVesselKey k f g] -> ShowS #

ToJSON k => ToJSON (SubVesselKey k f g) Source # 
Instance details

Defined in Data.Vessel.SubVessel

type ConstraintsFor (SubVesselKey k f :: ((Type -> Type) -> Type) -> Type) (c :: ((Type -> Type) -> Type) -> Constraint) Source # 
Instance details

Defined in Data.Vessel.SubVessel

type ConstraintsFor (SubVesselKey k f :: ((Type -> Type) -> Type) -> Type) (c :: ((Type -> Type) -> Type) -> Constraint) = c f

newtype SubVessel (k :: *) (v :: (* -> *) -> *) (f :: * -> *) Source #

Something between MapV and Vessel, where the keys are simple values, but the values are full views.

TODO: this representation has the advantage that all of it's instances come "free", but the mostly "right" representation is probably ... Vessel v (Compose (MonoidalMap k) f)

Constructors

SubVessel 

Fields

Instances

Instances details
(Ord k, View v) => EmptyView (SubVessel k v) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Methods

emptyV :: forall (f :: Type -> Type). SubVessel k v f Source #

(Ord k, View v) => View (SubVessel k v) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Methods

condenseV :: forall t (g :: Type -> Type). (Foldable t, Filterable t, Functor t) => t (SubVessel k v g) -> SubVessel k v (Compose t g) Source #

disperseV :: forall t (g :: Type -> Type). Align t => SubVessel k v (Compose t g) -> t (SubVessel k v g) Source #

cropV :: (forall a. s a -> i a -> r a) -> SubVessel k v s -> SubVessel k v i -> Maybe (SubVessel k v r) Source #

nullV :: forall (i :: Type -> Type). SubVessel k v i -> Bool Source #

mapV :: (forall a. f a -> g a) -> SubVessel k v f -> SubVessel k v g Source #

traverseV :: Applicative m => (forall a. f a -> m (g a)) -> SubVessel k v f -> m (SubVessel k v g) Source #

mapMaybeV :: (forall a. f a -> Maybe (g a)) -> SubVessel k v f -> Maybe (SubVessel k v g) Source #

alignWithMaybeV :: (forall a. These (f a) (g a) -> Maybe (h a)) -> SubVessel k v f -> SubVessel k v g -> Maybe (SubVessel k v h) Source #

alignWithV :: (forall a. These (f a) (g a) -> h a) -> SubVessel k v f -> SubVessel k v g -> SubVessel k v h Source #

(Ord k, Eq (v f)) => Eq (SubVessel k v f) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Methods

(==) :: SubVessel k v f -> SubVessel k v f -> Bool #

(/=) :: SubVessel k v f -> SubVessel k v f -> Bool #

(Show k, Show (v f)) => Show (SubVessel k v f) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Methods

showsPrec :: Int -> SubVessel k v f -> ShowS #

show :: SubVessel k v f -> String #

showList :: [SubVessel k v f] -> ShowS #

Generic (SubVessel k v f) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Associated Types

type Rep (SubVessel k v f) :: Type -> Type #

Methods

from :: SubVessel k v f -> Rep (SubVessel k v f) x #

to :: Rep (SubVessel k v f) x -> SubVessel k v f #

(Semigroup (v f), Ord k, View v) => Semigroup (SubVessel k v f) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Methods

(<>) :: SubVessel k v f -> SubVessel k v f -> SubVessel k v f #

sconcat :: NonEmpty (SubVessel k v f) -> SubVessel k v f #

stimes :: Integral b => b -> SubVessel k v f -> SubVessel k v f #

(Semigroup (v f), Ord k, View v) => Monoid (SubVessel k v f) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Methods

mempty :: SubVessel k v f #

mappend :: SubVessel k v f -> SubVessel k v f -> SubVessel k v f #

mconcat :: [SubVessel k v f] -> SubVessel k v f #

(Ord k, ToJSON k, ToJSON (v f)) => ToJSON (SubVessel k v f) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Methods

toJSON :: SubVessel k v f -> Value #

toEncoding :: SubVessel k v f -> Encoding #

toJSONList :: [SubVessel k v f] -> Value #

toEncodingList :: [SubVessel k v f] -> Encoding #

(Ord k, FromJSON k, FromJSON (v f), View v) => FromJSON (SubVessel k v f) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Methods

parseJSON :: Value -> Parser (SubVessel k v f) #

parseJSONList :: Value -> Parser [SubVessel k v f] #

(Ord k, View v, Group (v f)) => Group (SubVessel k v f) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Methods

negateG :: SubVessel k v f -> SubVessel k v f #

(~~) :: SubVessel k v f -> SubVessel k v f -> SubVessel k v f #

(Semigroup (v f), Ord k, View v) => Additive (SubVessel k v f) Source # 
Instance details

Defined in Data.Vessel.SubVessel

(Ord k, View v, Query (Vessel (SubVesselKey k v) g), Semigroup (v (Compose c (VesselLeafWrapper (QueryResult (Vessel (SubVesselKey k v) g)))))) => Query (SubVessel k v (Compose c g)) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Associated Types

type QueryResult (SubVessel k v (Compose c g)) #

Methods

crop :: SubVessel k v (Compose c g) -> QueryResult (SubVessel k v (Compose c g)) -> QueryResult (SubVessel k v (Compose c g)) #

(Ord k, Semigroup (v Identity), View v) => Query (SubVessel k v (Proxy :: Type -> Type)) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Associated Types

type QueryResult (SubVessel k v Proxy) #

(Ord k, Semigroup (v Identity), View v) => Query (SubVessel k v (Const x :: Type -> Type)) Source # 
Instance details

Defined in Data.Vessel.SubVessel

Associated Types

type QueryResult (SubVessel k v (Const x)) #

Methods

crop :: SubVessel k v (Const x) -> QueryResult (SubVessel k v (Const x)) -> QueryResult (SubVessel k v (Const x)) #

type ViewQueryResult (SubVessel k v g :: Type) Source # 
Instance details

Defined in Data.Vessel.SubVessel

type Rep (SubVessel k v f) Source # 
Instance details

Defined in Data.Vessel.SubVessel

type Rep (SubVessel k v f) = D1 ('MetaData "SubVessel" "Data.Vessel.SubVessel" "vessel-0.1.0.0-L81NXpc2nSw1m63K9xevMw" 'True) (C1 ('MetaCons "SubVessel" 'PrefixI 'True) (S1 ('MetaSel ('Just "unSubVessel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Vessel (SubVesselKey k v) f))))
type QueryResult (SubVessel k v (Compose c g)) Source # 
Instance details

Defined in Data.Vessel.SubVessel

type QueryResult (SubVessel k v (Proxy :: Type -> Type)) Source # 
Instance details

Defined in Data.Vessel.SubVessel

type QueryResult (SubVessel k v (Const x :: Type -> Type)) Source # 
Instance details

Defined in Data.Vessel.SubVessel

getSubVessel :: Ord k => SubVessel k v f -> MonoidalMap k (v f) Source #

mkSubVessel :: Ord k => MonoidalMap k (v f) -> SubVessel k v f Source #

traverseSubVessel :: (Ord k, View v, Applicative m) => (k -> v g -> m (v h)) -> SubVessel k v g -> m (SubVessel k v h) Source #

singletonSubVessel :: forall k f v. View v => k -> v f -> SubVessel k v f Source #

lookupSubVessel :: Ord k => k -> SubVessel k v f -> Maybe (v f) Source #

subVesselFromKeys :: (Ord k, View v) => (k -> v f) -> Set k -> SubVessel k v f Source #

subVessel :: (Ord k, View v, ViewQueryResult (v g) ~ v (ViewQueryResult g), Alternative n, Applicative m) => k -> ViewMorphism m n (v g) (SubVessel k v g) Source #

subVessels :: (Ord k, Applicative m, View v, Alternative n, ViewQueryResult (v g) ~ v (ViewQueryResult g), Monoid (n (v g)), Monoid (n (v (ViewQueryResult g)))) => Set k -> ViewMorphism m n (v g) (SubVessel k v g) Source #

fromSubVessels :: (Ord k, Applicative m, View v, Alternative n, ViewQueryResult (v g) ~ v (ViewQueryResult g), Monoid (n (v g))) => Set k -> ViewHalfMorphism n m (SubVessel k v g) (v g) Source #

mapMaybeWithKeySubVessel :: forall k v (g :: * -> *) (g' :: * -> *). (View v, Ord k) => (k -> v g -> Maybe (v g')) -> SubVessel k v g -> SubVessel k v g' Source #

uncurrySubVessel :: (Ord k1, Ord k2) => MonoidalMap k1 (SubVessel k2 v f) -> SubVessel (k1, k2) v f Source #

currySubVessel :: (Ord k1, Ord k2) => SubVessel (k1, k2) v f -> MonoidalMap k1 (SubVessel k2 v f) Source #

condenseVMMap :: forall k v g. View v => MonoidalMap k (v g) -> v (Compose (MonoidalMap k) g) Source #

the instance for Filterable (MonoidalMap k) is not defined anyplace conveninent, this sidesteps it for this particular case.

handleSubVesselSelector :: forall k m tag (f :: * -> *) (g :: * -> *). (Ord k, Applicative m, Has View tag, GCompare tag) => (forall v. tag v -> MonoidalMap k (v f) -> m (MonoidalMap k (v g))) -> SubVessel k (Vessel tag) f -> m (SubVessel k (Vessel tag) g) Source #

A gadget to "traverse" over all of the keys in a SubVessel in one step

handleSubSubVesselSelector :: (Ord k1, Ord k2, Applicative m, Has View tag, GCompare tag) => (forall v. tag v -> MonoidalMap (k1, k2) (v f) -> m (MonoidalMap (k1, k2) (v g))) -> MonoidalMap k1 (SubVessel k2 (Vessel tag) f) -> m (MonoidalMap k1 (SubVessel k2 (Vessel tag) g)) Source #

A gadget to "traverse" over all of the keys in a SubVessel, aligned to the keys nested inside a deeper Map, in one step