downhill-0.4.0.0: Reverse mode automatic differentiation
Safe HaskellSafe-Inferred
LanguageHaskell2010

Downhill.Internal.Graph.NodeMap

Synopsis

NodeMap

data NodeMap s f Source #

NodeMap s f is a map where value of type f x is associated with key NodeKey s x. Type variable s tracks the set of nodes. Lookups never fail. Maps can be zipped without losing any nodes.

data NodeKey s x Source #

Valid key, guaranteed to be a member of s

Construction

fromOpenMap :: forall f. OpenMap f -> SomeNodeMap f Source #

generate :: forall s f. IsNodeSet s => (forall x. NodeKey s x -> f x) -> NodeMap s f Source #

Query

lookup :: NodeMap s f -> NodeKey s v -> f v Source #

tryLookup :: NodeMap s f -> OpenKey x -> Maybe (NodeKey s x, f x) Source #

If key belongs to s, tryLookup will return a proof of this fact and a corresponding value from the map. Otherwise returns Nothing.

toListWith :: forall s f r. (forall x. NodeKey s x -> f x -> r) -> NodeMap s f -> [r] Source #

elems :: NodeMap s (Const b) -> [b] Source #

Modify

map :: forall s f g. (forall v. f v -> g v) -> NodeMap s f -> NodeMap s g Source #

mapWithKey :: forall s f g. (forall x. NodeKey s x -> f x -> g x) -> NodeMap s f -> NodeMap s g Source #

adjust :: forall s f x. (f x -> f x) -> NodeKey s x -> NodeMap s f -> NodeMap s f Source #

zipWith :: forall s f g h. (forall x. f x -> g x -> h x) -> NodeMap s f -> NodeMap s g -> NodeMap s h Source #

Node Set

class IsNodeSet s Source #

Minimal complete definition

allNodes

data SomeNodeMap f where Source #

NodeMap with existential set of nodes.

Constructors

SomeNodeMap :: IsNodeSet s => NodeMap s f -> SomeNodeMap f 

data KeyAndValue s f Source #

Constructors

forall x. KeyAndValue (NodeKey s x) (f x)