circuits
Safe HaskellNone
LanguageGHC2024

Circuit.Stamped

Description

Occurrence-tokens for values.

A Stamped value pairs an occurrence token (a stamp) with a payload. The stamp is an observation receipt: an id, a timestamp, a line number, or any other token that names the occurrence without changing the payload's meaning.

Free theorem

The stamp is untouched by payload mapping:

stamp (fmap f s) = stamp s
stamped (fmap f s) = f (stamped s)
>>> let s = Stamped 42 "hello"
>>> stamp (fmap reverse s)
42
>>> stamped (fmap reverse s)
"olleh"
Synopsis

Documentation

data Stamped r a Source #

A value a labelled by an occurrence token r.

Constructors

Stamped 

Fields

  • stamp :: r

    Occurrence token / receipt. Not touched by fmap.

  • stamped :: a

    The labelled payload.

Instances

Instances details
Bifunctor Stamped Source # 
Instance details

Defined in Circuit.Stamped

Methods

bimap :: (a -> b) -> (c -> d) -> Stamped a c -> Stamped b d #

first :: (a -> b) -> Stamped a c -> Stamped b c #

second :: (b -> c) -> Stamped a b -> Stamped a c #

Functor (Stamped r) Source # 
Instance details

Defined in Circuit.Stamped

Methods

fmap :: (a -> b) -> Stamped r a -> Stamped r b #

(<$) :: a -> Stamped r b -> Stamped r a #

Foldable (Stamped r) Source # 
Instance details

Defined in Circuit.Stamped

Methods

fold :: Monoid m => Stamped r m -> m #

foldMap :: Monoid m => (a -> m) -> Stamped r a -> m #

foldMap' :: Monoid m => (a -> m) -> Stamped r a -> m #

foldr :: (a -> b -> b) -> b -> Stamped r a -> b #

foldr' :: (a -> b -> b) -> b -> Stamped r a -> b #

foldl :: (b -> a -> b) -> b -> Stamped r a -> b #

foldl' :: (b -> a -> b) -> b -> Stamped r a -> b #

foldr1 :: (a -> a -> a) -> Stamped r a -> a #

foldl1 :: (a -> a -> a) -> Stamped r a -> a #

toList :: Stamped r a -> [a] #

null :: Stamped r a -> Bool #

length :: Stamped r a -> Int #

elem :: Eq a => a -> Stamped r a -> Bool #

maximum :: Ord a => Stamped r a -> a #

minimum :: Ord a => Stamped r a -> a #

sum :: Num a => Stamped r a -> a #

product :: Num a => Stamped r a -> a #

Traversable (Stamped r) Source # 
Instance details

Defined in Circuit.Stamped

Methods

traverse :: Applicative f => (a -> f b) -> Stamped r a -> f (Stamped r b) #

sequenceA :: Applicative f => Stamped r (f a) -> f (Stamped r a) #

mapM :: Monad m => (a -> m b) -> Stamped r a -> m (Stamped r b) #

sequence :: Monad m => Stamped r (m a) -> m (Stamped r a) #

(Eq r, Eq a) => Eq (Stamped r a) Source # 
Instance details

Defined in Circuit.Stamped

Methods

(==) :: Stamped r a -> Stamped r a -> Bool #

(/=) :: Stamped r a -> Stamped r a -> Bool #

(Show r, Show a) => Show (Stamped r a) Source # 
Instance details

Defined in Circuit.Stamped

Methods

showsPrec :: Int -> Stamped r a -> ShowS #

show :: Stamped r a -> String #

showList :: [Stamped r a] -> ShowS #