module Control.Lens.Named
(
lensAppend
, lensModify
, makeLensesModified
, makeLensesAppend
) where
import Control.Lens
import Data.Semigroup (Semigroup (..))
import Language.Haskell.TH.Syntax
lensModify :: (String -> String) -> LensRules
lensModify f = lensRules & lensField .~ mappingNamer (pure . f)
lensAppend :: LensRules
lensAppend = lensModify (<> "Lens")
makeLensesModified :: (String -> String) -> Name -> Q [Dec]
makeLensesModified = makeLensesWith . lensModify
makeLensesAppend :: Name -> Q [Dec]
makeLensesAppend = makeLensesWith lensAppend