{- |
 Module      :  Control.Monad.Tell.Lens
 Copyright   :  (C) 2021 Isaac Elliott
 License     :  BSD-3 (see the file LICENSE)
 Maintainer  :  Isaac Elliott <isaace71295@gmail.com>
-}
module Control.Monad.Tell.Lens (scribe) where

import Control.Lens.Setter (ASetter, set)
import Control.Monad.Tell.Class (MonadTell, tell)

{-# INLINE scribe #-}
scribe :: (MonadTell t m, Monoid s) => ASetter s t a b -> b -> m ()
scribe :: ASetter s t a b -> b -> m ()
scribe ASetter s t a b
l b
b = t -> m ()
forall w (m :: * -> *). MonadTell w m => w -> m ()
tell (ASetter s t a b -> b -> s -> t
forall s t a b. ASetter s t a b -> b -> s -> t
set ASetter s t a b
l b
b s
forall a. Monoid a => a
mempty)