cabal-fmt-0.1.10: src/CabalFmt/Prelude.hs
{-# LANGUAGE CPP #-}
-- |
-- License: GPL-3.0-or-later
-- Copyright: Oleg Grenrus
--
-- Fat-prelude.
module CabalFmt.Prelude (
-- * Control.Arrow
(&&&),
-- * Control.Monad
when, unless, void,
-- * Data.Bifunctor
bimap,
-- * Data.Char
toLower,
-- * Data.Either
partitionEithers,
-- * Data.Foldable
toList, traverse_, asum, for_,
-- * Data.Function
on, (&),
-- * Data.List
intercalate, sortOn, sortBy, nub,
-- * Data.Maybe
catMaybes,
fromMaybe,
isJust,
isNothing,
-- * Packages
-- ** bytestring
ByteString,
-- ** Cabal
C.fromUTF8BS, C.toUTF8BS,
pack', unpack',
-- ** containers
Set,
-- ** directory
dropExtension, splitDirectories,
-- ** exceptions
catchError, throwError,
-- * Extras
-- ** Lens
traverseOf,
over, view,
_1,
-- ** Tuples
fstOf3,
sndOf3,
trdOf3,
) where
import Control.Arrow ((&&&))
import Control.Monad (unless, void, when)
import Control.Monad.Except (catchError, throwError)
import Data.Bifunctor (bimap)
import Data.ByteString (ByteString)
import Data.Char (toLower)
import Data.Either (partitionEithers)
import Data.Foldable (asum, for_, toList, traverse_)
import Data.Function (on, (&))
import Data.List (intercalate, nub, sortBy, sortOn)
import Data.Maybe (catMaybes, fromMaybe, isJust, isNothing)
import Data.Set (Set)
import Distribution.Compat.Lens (over, view)
import Distribution.Compat.Newtype (pack', unpack')
import System.FilePath (dropExtension, splitDirectories)
import qualified Distribution.Utils.Generic as C
#ifdef MIN_VERSION_base_orphans
import Data.Orphans ()
#endif
traverseOf
:: Applicative f
=> ((a -> f b) -> s -> f t)
-> (a -> f b) -> s -> f t
traverseOf = id
_1 :: Functor f => (a -> f b) -> (a, c) -> f (b, c)
_1 f (a, c) = (\b -> (b, c)) <$> f a
fstOf3 :: (a,b,c) -> a
fstOf3 (a,_,_) = a
sndOf3 :: (a,b,c) -> b
sndOf3 (_,b,_) = b
trdOf3 :: (a,b,c) -> c
trdOf3 (_,_,c) = c