caramia-0.2.0.0: src/Graphics/Caramia/Internal/Lens.hs
-- | 'lens' package compatible Lens.
--
-- This is used to avoid 'lens' dependency.
--
{-# LANGUAGE RankNTypes, NoImplicitPrelude #-}
module Graphics.Caramia.Internal.Lens
( Lens
, Lens'
, lens )
where
import Graphics.Caramia.Prelude
type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t
type Lens' s a = Lens s s a a
lens :: (s -> a) -> (s -> a -> s) -> Lens' s a
lens sa sbt afb s = sbt s `fmap` afb (sa s)
{-# INLINE lens #-}