Perspectives.DependencyTracking.Dependency
#ApiEffectRunner
type ApiEffectRunner = Unit -> MP Unit
Execute an EffectRunner to re-create an effect. This should be done whenever one or more assumptions underlying the computation of the query that delivers the results to the ApiEffect, has changed.
#SupportedEffect
type SupportedEffect = { assumptions :: Array Assumption, runner :: ApiEffectRunner }
A SupportedEffect combines an EffectRunner and an array of Assumptions on which it relies. We use the Assumptions to unregister an entry from the AssumptionRegister, when the ApiEffect is retracted.
#ActiveSupportedEffects
type ActiveSupportedEffects = GLStrMap SupportedEffect
A SupportedEffect is in the ActiveSupportedEffects after it has been requested through the API and for as long as it is not retracted. As soon as an Assumption changes, the active SupportedEffects that rely on it, are re-executed. A SupportedEffect is stored under the CorrelationIdentifier that identifies the ApiEffect.
#lookupActiveSupportedEffect
#activeSupportedEffects
activeSupportedEffects :: ActiveSupportedEffects
A global store of SupportedEffect-s This index cannot be part of the PerspectivesState. The compiler loops on it.
#registerSupportedEffect
registerSupportedEffect :: forall a b. CorrelationIdentifier -> ApiEffect -> (a ~~> b) -> a -> MP Unit
Register the ApiEffect and the TrackedObjectsGetter with the CorrelationIdentifier and run it once. Running means: compute the result of the TrackedObjectsGetter, add the computed Assumptions to the SupportedEffect and push the resulting values into the ApiEffect. As a result:
- we have cached a new SupportedEffect in the ActiveSupportedEffects.
- we have registered the dependency of this SupportedEffect in the AssumptionRegister in the PerspectivesState.
#unregisterSupportedEffect
#_assumptionDependencies
#findDependencies
findDependencies :: Assumption -> MP (Maybe (Array CorrelationIdentifier))
#isRegistered
isRegistered :: CorrelationIdentifier -> Assumption -> MP Boolean
#registerDependency
#deregisterDependency
Modules
- Affjax
- Affjax.RequestBody
- Affjax.RequestHeader
- Affjax.ResponseFormat
- Affjax.ResponseHeader
- Affjax.StatusCode
- Control.Aff.Sockets
- Control.Alt
- Control.Alternative
- Control.Applicative
- Control.Apply
- Control.Biapplicative
- Control.Biapply
- Control.Bind
- Control.Category
- Control.Comonad
- Control.Comonad.Cofree
- Control.Comonad.Cofree.Class
- Control.Comonad.Env
- Control.Comonad.Env.Class
- Control.Comonad.Env.Trans
- Control.Comonad.Store
- Control.Comonad.Store.Class
- Control.Comonad.Store.Trans
- Control.Comonad.Traced
- Control.Comonad.Traced.Class
- Control.Comonad.Traced.Trans
- Control.Comonad.Trans.Class
- Control.Coroutine
- Control.Coroutine.Aff
- Control.Extend
- Control.Lazy
- Control.Monad
- Control.Monad.AvarMonadAsk
- Control.Monad.Cont
- Control.Monad.Cont.Class
- Control.Monad.Cont.Trans
- Control.Monad.Error.Class
- Control.Monad.Except
- Control.Monad.Except.Trans
- Control.Monad.Free
- Control.Monad.Free.Class
- Control.Monad.Free.Trans
- Control.Monad.Gen
- Control.Monad.Gen.Class
- Control.Monad.Gen.Common
- Control.Monad.List.Trans
- Control.Monad.Maybe.Trans
- Control.Monad.RWS
- Control.Monad.RWS.Trans
- Control.Monad.Reader
- Control.Monad.Reader.Class
- Control.Monad.Reader.Trans
- Control.Monad.Rec.Class
- Control.Monad.ST
- Control.Monad.ST.Internal
- Control.Monad.ST.Ref
- Control.Monad.State
- Control.Monad.State.Class
- Control.Monad.State.Trans
- Control.Monad.Trampoline
- Control.Monad.Trans.Class
- Control.Monad.Writer
- Control.Monad.Writer.Class
- Control.Monad.Writer.Trans
- Control.MonadPlus
- Control.MonadZero
- Control.Parallel
- Control.Parallel.Class
- Control.Plus
- Control.Promise
- Control.Semigroupoid
- Data.Argonaut
- Data.Argonaut.Core
- Data.Argonaut.Decode
- Data.Argonaut.Decode.Class
- Data.Argonaut.Decode.Combinators
- Data.Argonaut.Encode
- Data.Argonaut.Encode.Class
- Data.Argonaut.Encode.Combinators
- Data.Argonaut.Gen
- Data.Argonaut.JCursor
- Data.Argonaut.JCursor.Gen
- Data.Argonaut.Parser
- Data.Argonaut.Prisms
- Data.Argonaut.Traversals
- Data.Array
- Data.Array.NonEmpty
- Data.Array.NonEmpty.Internal
- Data.Array.Partial
- Data.Array.ST
- Data.Array.ST.Iterator
- Data.Array.ST.Partial
- Data.ArrayBuffer.Types
- Data.Bifoldable
- Data.Bifunctor
- Data.Bifunctor.Clown
- Data.Bifunctor.Flip
- Data.Bifunctor.Join
- Data.Bifunctor.Joker
- Data.Bifunctor.Product
- Data.Bifunctor.Wrap
- Data.Bitraversable
- Data.Boolean
- Data.BooleanAlgebra
- Data.Bounded
- Data.CatList
- Data.CatQueue
- Data.Char
- Data.Char.Gen
- Data.Char.Unicode
- Data.Char.Unicode.Internal
- Data.CommutativeRing
- Data.Comparison
- Data.Const
- Data.Coyoneda
- Data.Date
- Data.Date.Component
- Data.Date.Component.Gen
- Data.Date.Gen
- Data.DateTime
- Data.DateTime.Gen
- Data.DateTime.ISO
- Data.DateTime.Instant
- Data.Decidable
- Data.Decide
- Data.Distributive
- Data.Divide
- Data.Divisible
- Data.DivisionRing
- Data.Either
- Data.Either.Inject
- Data.Either.Nested
- Data.Enum
- Data.Enum.Gen
- Data.Eq
- Data.Equivalence
- Data.EuclideanRing
- Data.Exists
- Data.Field
- Data.Foldable
- Data.FoldableWithIndex
- Data.FormURLEncoded
- Data.Function
- Data.Function.Uncurried
- Data.Functor
- Data.Functor.App
- Data.Functor.Compose
- Data.Functor.Contravariant
- Data.Functor.Coproduct
- Data.Functor.Coproduct.Inject
- Data.Functor.Coproduct.Nested
- Data.Functor.Invariant
- Data.Functor.Product
- Data.Functor.Product.Nested
- Data.Functor.Variant
- Data.FunctorWithIndex
- Data.Generic.Rep
- Data.Generic.Rep.Bounded
- Data.Generic.Rep.Enum
- Data.Generic.Rep.Eq
- Data.Generic.Rep.HeytingAlgebra
- Data.Generic.Rep.Monoid
- Data.Generic.Rep.Ord
- Data.Generic.Rep.Ring
- Data.Generic.Rep.Semigroup
- Data.Generic.Rep.Semiring
- Data.Generic.Rep.Show
- Data.HTTP.Method
- Data.HeytingAlgebra
- Data.Identity
- Data.Int
- Data.Int.Bits
- Data.Interval
- Data.Interval.Duration
- Data.Interval.Duration.Iso
- Data.JSDate
- Data.Lazy
- Data.Lens
- Data.Lens.At
- Data.Lens.Common
- Data.Lens.Fold
- Data.Lens.Fold.Partial
- Data.Lens.Getter
- Data.Lens.Grate
- Data.Lens.Index
- Data.Lens.Indexed
- Data.Lens.Internal.Bazaar
- Data.Lens.Internal.Exchange
- Data.Lens.Internal.Focusing
- Data.Lens.Internal.Forget
- Data.Lens.Internal.Grating
- Data.Lens.Internal.Indexed
- Data.Lens.Internal.Market
- Data.Lens.Internal.Re
- Data.Lens.Internal.Shop
- Data.Lens.Internal.Tagged
- Data.Lens.Internal.Wander
- Data.Lens.Internal.Zipping
- Data.Lens.Iso
- Data.Lens.Iso.Newtype
- Data.Lens.Lens
- Data.Lens.Lens.Product
- Data.Lens.Lens.Tuple
- Data.Lens.Lens.Unit
- Data.Lens.Lens.Void
- Data.Lens.Prism
- Data.Lens.Prism.Coproduct
- Data.Lens.Prism.Either
- Data.Lens.Prism.Maybe
- Data.Lens.Record
- Data.Lens.Setter
- Data.Lens.Traversal
- Data.Lens.Types
- Data.Lens.Zoom
- Data.List
- Data.List.Lazy
- Data.List.Lazy.NonEmpty
- Data.List.Lazy.Types
- Data.List.NonEmpty
- Data.List.Partial
- Data.List.Types
- Data.List.ZipList
- Data.Map
- Data.Map.Gen
- Data.Map.Internal
- Data.Maybe
- Data.Maybe.First
- Data.Maybe.Last
- Data.MediaType
- Data.MediaType.Common
- Data.Monoid
- Data.Monoid.Additive
- Data.Monoid.Alternate
- Data.Monoid.Conj
- Data.Monoid.Disj
- Data.Monoid.Dual
- Data.Monoid.Endo
- Data.Monoid.Multiplicative
- Data.NaturalTransformation
- Data.Newtype
- Data.NonEmpty
- Data.Nullable
- Data.Number
- Data.Number.Approximate
- Data.Number.Format
- Data.Op
- Data.Options
- Data.Ord
- Data.Ord.Down
- Data.Ord.Max
- Data.Ord.Min
- Data.Ord.Unsafe
- Data.Ordering
- Data.Posix
- Data.Posix.Signal
- Data.Predicate
- Data.Profunctor
- Data.Profunctor.Choice
- Data.Profunctor.Closed
- Data.Profunctor.Clown
- Data.Profunctor.Cochoice
- Data.Profunctor.Costar
- Data.Profunctor.Costrong
- Data.Profunctor.Cowrap
- Data.Profunctor.Join
- Data.Profunctor.Joker
- Data.Profunctor.Split
- Data.Profunctor.Star
- Data.Profunctor.Strong
- Data.Profunctor.Wrap
- Data.Ring
- Data.Semigroup
- Data.Semigroup.First
- Data.Semigroup.Foldable
- Data.Semigroup.Last
- Data.Semigroup.Traversable
- Data.Semiring
- Data.Set
- Data.Set.NonEmpty
- Data.Show
- Data.String
- Data.String.CaseInsensitive
- Data.String.CodePoints
- Data.String.CodeUnits
- Data.String.Common
- Data.String.Gen
- Data.String.NonEmpty
- Data.String.NonEmpty.CaseInsensitive
- Data.String.NonEmpty.CodePoints
- Data.String.NonEmpty.CodeUnits
- Data.String.NonEmpty.Internal
- Data.String.Pattern
- Data.String.Regex
- Data.String.Regex.Flags
- Data.String.Regex.Unsafe
- Data.String.Unsafe
- Data.Symbol
- Data.These
- Data.These.Gen
- Data.Time
- Data.Time.Component
- Data.Time.Component.Gen
- Data.Time.Duration
- Data.Time.Duration.Gen
- Data.Time.Gen
- Data.Traversable
- Data.Traversable.Accum
- Data.Traversable.Accum.Internal
- Data.TraversableWithIndex
- Data.Tuple
- Data.Tuple.Nested
- Data.Unfoldable
- Data.Unfoldable1
- Data.Unit
- Data.Validation.Semigroup
- Data.Validation.Semiring
- Data.Variant
- Data.Variant.Internal
- Data.Void
- Data.Yoneda
- Effect
- Effect.AVar
- Effect.Aff
- Effect.Aff.AVar
- Effect.Aff.Class
- Effect.Aff.Compat
- Effect.Class
- Effect.Class.Console
- Effect.Console
- Effect.Exception
- Effect.Exception.Unsafe
- Effect.Now
- Effect.Random
- Effect.Ref
- Effect.Timer
- Effect.Uncurried
- Effect.Unsafe
- Foreign
- Foreign.Class
- Foreign.Generic
- Foreign.Generic.Class
- Foreign.Generic.EnumEncoding
- Foreign.Generic.Types
- Foreign.Index
- Foreign.Internal
- Foreign.JSON
- Foreign.Keys
- Foreign.NullOrUndefined
- Foreign.Object
- Foreign.Object.Gen
- Foreign.Object.ST
- Foreign.Object.ST.Unsafe
- Foreign.Object.Unsafe
- Global
- Global.Unsafe
- Kishimen
- Main
- MainCouchdb
- Math
- Node.Buffer
- Node.Buffer.Unsafe
- Node.Encoding
- Node.FS
- Node.FS.Aff
- Node.FS.Async
- Node.FS.Internal
- Node.FS.Perms
- Node.FS.Stats
- Node.FS.Stream
- Node.FS.Sync
- Node.Globals
- Node.Path
- Node.Platform
- Node.Process
- Node.ReadLine
- Node.Stream
- Node.Yargs
- Node.Yargs.Applicative
- Node.Yargs.Setup
- PSCI.Support
- Partial
- Partial.Unsafe
- Perspectives.Actions
- Perspectives.Api
- Perspectives.ApiTypes
- Perspectives.Assignment.ActionCache
- Perspectives.Assignment.DependencyTracking
- Perspectives.Assignment.Update
- Perspectives.BasicConstructors
- Perspectives.Checking.PerspectivesTypeChecker
- Perspectives.Checking.PerspectivesTypeChecker.Messages
- Perspectives.ContextAndRole
- Perspectives.ContextRolAccessors
- Perspectives.ContextRoleParser
- Perspectives.CoreTypes
- Perspectives.Couchdb
- Perspectives.Couchdb.Databases
- Perspectives.CouchdbState
- Perspectives.Deltas
- Perspectives.DependencyTracking.Array.Trans
- Perspectives.DependencyTracking.Dependency
- Perspectives.Docu.InstancePersistence
- Perspectives.Docu.Instances
- Perspectives.Docu.Main
- Perspectives.Docu.TypePersistence
- Perspectives.Docu.TypeRepresentation
- Perspectives.DomeinCache
- Perspectives.DomeinFile
- Perspectives.EntiteitAndRDFAliases
- Perspectives.GlobalState
- Perspectives.GlobalUnsafeStrMap
- Perspectives.Guid
- Perspectives.Identifiers
- Perspectives.IndentParser
- Perspectives.InstanceRepresentation
- Perspectives.Instances.Aliases
- Perspectives.Instances.Combinators
- Perspectives.Instances.ComputedGetters
- Perspectives.Instances.Environment
- Perspectives.Instances.ObjectGetters
- Perspectives.LoadCRL
- Perspectives.ObjectGetterLookup
- Perspectives.ParseFromCommandLine
- Perspectives.Parser
- Perspectives.Parsing.Arc
- Perspectives.Parsing.Arc.AST
- Perspectives.Parsing.Arc.Comments
- Perspectives.Parsing.Arc.Expression
- Perspectives.Parsing.Arc.Expression.AST
- Perspectives.Parsing.Arc.Identifiers
- Perspectives.Parsing.Arc.IndentParser
- Perspectives.Parsing.Arc.PhaseThree
- Perspectives.Parsing.Arc.PhaseTwo
- Perspectives.Parsing.Arc.Token
- Perspectives.Parsing.Messages
- Perspectives.Parsing.TransferFile
- Perspectives.Parsing.TransferFile.Token
- Perspectives.Persistent
- Perspectives.PerspectivesState
- Perspectives.Query.Compiler
- Perspectives.Query.DescriptionCompiler
- Perspectives.Query.QueryTypes
- Perspectives.QueryAST
- Perspectives.Representation.ADT
- Perspectives.Representation.Action
- Perspectives.Representation.Assignment
- Perspectives.Representation.CalculatedProperty
- Perspectives.Representation.CalculatedRole
- Perspectives.Representation.Calculation
- Perspectives.Representation.Class.Action
- Perspectives.Representation.Class.Cacheable
- Perspectives.Representation.Class.EnumReadForeign
- Perspectives.Representation.Class.Identifiable
- Perspectives.Representation.Class.PersistentType
- Perspectives.Representation.Class.Property
- Perspectives.Representation.Class.Revision
- Perspectives.Representation.Class.Role
- Perspectives.Representation.Context
- Perspectives.Representation.EnumeratedProperty
- Perspectives.Representation.EnumeratedRole
- Perspectives.Representation.InstanceIdentifiers
- Perspectives.Representation.QueryFunction
- Perspectives.Representation.SideEffect
- Perspectives.Representation.ThreeValuedLogic
- Perspectives.Representation.TypeIdentifiers
- Perspectives.Representation.View
- Perspectives.RunMonadPerspectivesTransaction
- Perspectives.RunPerspectives
- Perspectives.SaveUserData
- Perspectives.SetupCouchdb
- Perspectives.SetupUser
- Perspectives.Sync.Class.Assumption
- Perspectives.Sync.DateTime
- Perspectives.Sync.Transaction
- Perspectives.Syntax
- Perspectives.Token
- Perspectives.TypePersistence.LoadArc
- Perspectives.Types.ObjectGetters
- Perspectives.TypesForDeltas
- Perspectives.User
- Perspectives.Utilities
- Prelude
- Prim
- Prim.Boolean
- Prim.Ordering
- Prim.Row
- Prim.RowList
- Prim.Symbol
- Prim.TypeError
- Random.LCG
- Record
- Record.Builder
- Record.ST
- Record.Unsafe
- Record.Unsafe.Union
- Simple.JSON
- Test.QuickCheck
- Test.QuickCheck.Arbitrary
- Test.QuickCheck.Gen
- Test.Unit
- Test.Unit.Assert
- Test.Unit.Console
- Test.Unit.Main
- Test.Unit.Output.Fancy
- Test.Unit.Output.Simple
- Test.Unit.Output.TAP
- Test.Unit.QuickCheck
- Text.Parsing.Indent
- Text.Parsing.Parser
- Text.Parsing.Parser.Combinators
- Text.Parsing.Parser.Expr
- Text.Parsing.Parser.Language
- Text.Parsing.Parser.Pos
- Text.Parsing.Parser.String
- Text.Parsing.Parser.Token
- Type.Data.Boolean
- Type.Data.Ordering
- Type.Data.Row
- Type.Data.RowList
- Type.Data.Symbol
- Type.Equality
- Type.Prelude
- Type.Proxy
- Type.Row
- Type.Row.Homogeneous
- URI
- URI.AbsoluteURI
- URI.Authority
- URI.Common
- URI.Extra.MultiHostPortPair
- URI.Extra.QueryPairs
- URI.Extra.UserPassInfo
- URI.Fragment
- URI.HierarchicalPart
- URI.Host
- URI.Host.Gen
- URI.Host.IPv4Address
- URI.Host.IPv6Address
- URI.Host.RegName
- URI.HostPortPair
- URI.HostPortPair.Gen
- URI.Path
- URI.Path.Absolute
- URI.Path.NoScheme
- URI.Path.Rootless
- URI.Path.Segment
- URI.Port
- URI.Port.Gen
- URI.Query
- URI.RelativePart
- URI.RelativeRef
- URI.Scheme
- URI.Scheme.Common
- URI.URI
- URI.URIRef
- URI.UserInfo
- Unsafe.Coerce
- Web.DOM
- Web.DOM.CharacterData
- Web.DOM.ChildNode
- Web.DOM.Comment
- Web.DOM.DOMTokenList
- Web.DOM.Document
- Web.DOM.DocumentFragment
- Web.DOM.DocumentType
- Web.DOM.Element
- Web.DOM.HTMLCollection
- Web.DOM.Internal.Types
- Web.DOM.MutationObserver
- Web.DOM.MutationRecord
- Web.DOM.Node
- Web.DOM.NodeList
- Web.DOM.NodeType
- Web.DOM.NonDocumentTypeChildNode
- Web.DOM.NonElementParentNode
- Web.DOM.ParentNode
- Web.DOM.ProcessingInstruction
- Web.DOM.Text
- Web.Event.CustomEvent
- Web.Event.Event
- Web.Event.EventPhase
- Web.Event.EventTarget
- Web.Event.Internal.Types
- Web.File.Blob
- Web.File.File
- Web.File.FileList
- Web.File.FileReader
- Web.File.FileReader.ReadyState
- Web.File.Url
- Web.Internal.FFI
- Web.XHR.EventTypes
- Web.XHR.FormData
- Web.XHR.ProgressEvent
- Web.XHR.ReadyState
- Web.XHR.ResponseType
- Web.XHR.XMLHttpRequest
- Web.XHR.XMLHttpRequestUpload