Module

Control.Comonad.Store.Class

This module defines the ComonadStore type class and its instances.

#ComonadStore

class ComonadStore :: Type -> (Type -> Type) -> Constraintclass (Comonad w) <= ComonadStore s w | w -> s where

The ComonadStore type class represents those monads which support local position information via pos and peek.

  • pos reads the current position.
  • peek reads the value at the specified position in the specified context.

An implementation is provided for StoreT.

Laws:

  • pos (extend _ x) = pos x
  • peek (pos x) x = extract x

For example:

blur :: forall w. (ComonadStore Number w) -> w Number -> w Number
blur = extend \r -> (peeks (\n -> n - 1) r + peeks (\n -> n + 1) r) / 2)

Members

  • pos :: forall a. w a -> s
  • peek :: forall a. s -> w a -> a

Instances

#experiment

experiment :: forall f a w s. ComonadStore s w => Functor f => (s -> f s) -> w a -> f a

Extract a collection of values from positions which depend on the current position.

#peeks

peeks :: forall s a w. ComonadStore s w => (s -> s) -> w a -> a

Extract a value from a position which depends on the current position.

#seek

seek :: forall s a w. ComonadStore s w => s -> w a -> w a

Reposition the focus at the specified position.

#seeks

seeks :: forall s a w. ComonadStore s w => (s -> s) -> w a -> w a

Reposition the focus at the specified position, which depends on the current position.

Modules