shake-language-c-0.5.0: Development/Shake/Language/C/Label.hs
-- Copyright 2012-2013 Samplecount S.L.
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
{-# LANGUAGE TypeOperators #-}
{-|
Description: Lens utilities
This module provides some lens utilities and also re-exports "Data.Label",
which can avoid a package dependency on @fclabels@ in some cases.
-}
module Development.Shake.Language.C.Label (
module Data.Label
, append
, prepend
) where
import Data.Label
import Data.Monoid (Monoid, mappend)
-- | Append stuff to the 'Monoid' in record field specified by lens.
append :: Monoid a =>
(f :-> a) -- ^ lens
-> a -- ^ stuff to append
-> f -- ^ original record
-> f -- ^ modified record
append l n = modify l (`mappend` n)
-- | Prepend stuff to the 'Monoid' in record field specified by lens.
prepend :: Monoid a =>
(f :-> a) -- ^ lens
-> a -- ^ stuff to prepend
-> f -- ^ original record
-> f -- ^ modified record
prepend l n = modify l (n `mappend`)