module RIO.Prelude.Lens
  ( view
  , Lens.Micro.ASetter
  , Lens.Micro.ASetter'
  , Lens.Micro.Getting
  , Lens.Micro.Lens
  , Lens.Micro.Lens'
  , Lens.Micro.SimpleGetter
  , Lens.Micro.lens
  , Lens.Micro.over
  , Lens.Micro.set
  , Lens.Micro.sets
  , Lens.Micro.to
  , (Lens.Micro.^.)
  ) where

import Lens.Micro
import Control.Monad.Reader (MonadReader, asks)
import           Lens.Micro.Internal      (( #. ))
import           Control.Applicative      (Const (..))

view :: MonadReader s m => Getting a s a -> m a
view :: Getting a s a -> m a
view Getting a s a
l = (s -> a) -> m a
forall r (m :: * -> *) a. MonadReader r m => (r -> a) -> m a
asks (Const a s -> a
forall a k (b :: k). Const a b -> a
getConst (Const a s -> a) -> (s -> Const a s) -> s -> a
forall c b a. Coercible c b => (b -> c) -> (a -> b) -> a -> c
#. Getting a s a
l a -> Const a a
forall k a (b :: k). a -> Const a b
Const)