-- 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`)