Maintainer | Ertugrul Soeylemez <es@ertes.de> |
---|

Unique identifiers.

- context :: forall a b m. (Ord a, Monad m) => Wire m a b -> Wire m a b
- contextInt :: forall b m. Monad m => Wire m Int b -> Wire m Int b
- contextLimited :: forall a b m. (Ord a, Monad m) => Wire m a b -> Wire m (Int, Time, a) b
- contextLimitedInt :: forall b m. Monad m => Wire m Int b -> Wire m (Int, Time, Int) b
- identifier :: MonadIO m => Wire m a Int

# Context-sensitive time

context :: forall a b m. (Ord a, Monad m) => Wire m a b -> Wire m a bSource

Make the given wire context-sensitive. The input signal is a context and the argument wire will evolve individually for each such context.

Inherits inhibition and feedback behaviour from the current context's wire.

contextLimited :: forall a b m. (Ord a, Monad m) => Wire m a b -> Wire m (Int, Time, a) bSource

Same as `context`

, but with a time limit. The left signal
specifies a threshold and the middle signal specifies a maximum age.
If the current number of contexts exceeds the threshold, then all
contexts exceeding the maximum age are deleted.

Inherits inhibition and feedback behaviour from the current context's wire.

contextLimitedInt :: forall b m. Monad m => Wire m Int b -> Wire m (Int, Time, Int) bSource

Specialized version of `contextLimited`

. Use this one, if your
contexts are `Int`

s and you have a lot of them.

Inherits inhibition and feedback behaviour from the current context's wire.

# Identifiers.

identifier :: MonadIO m => Wire m a IntSource

Choose a unique identifier when switching in and keep it.

Never inhibits.