proton-0.0.2: src/Data/Profunctor/Remember.hs
module Data.Profunctor.Remember where
import Data.Profunctor
-- This is just Tagged + Closed, so it doesn't add anything new.
newtype Remember r a b = Remember (r -> b)
deriving Functor
instance Profunctor (Remember r) where
dimap _ g (Remember x) = Remember (g . x)
instance Choice (Remember r) where
left' (Remember x) = Remember (Left . x)
instance Closed (Remember r) where
closed (Remember x) = Remember (\r _ -> x r)
instance Costrong (Remember r) where
unfirst (Remember x) = Remember (fst . x)