{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE CPP #-}
module Matterhorn.Prelude
( module P
#if !MIN_VERSION_base(4,9,0)
, (<>)
#endif
, (<|>)
, Maybe.isJust
, Maybe.isNothing
, Maybe.listToMaybe
, Maybe.maybeToList
, Maybe.fromMaybe
, Maybe.catMaybes
, Read.readMaybe
, Monad.forM
, Monad.forM_
, Monad.filterM
, Monad.when
, Monad.unless
, Monad.void
, Monad.join
, Monad.forever
, Monad.foldM
, Monad.MonadIO(..)
, Foldable.toList
, List.find
, List.sort
, List.intercalate
, Exts.sortWith
, Exts.groupWith
, (Lens.&)
, (Lens.^.)
, (Lens.^?)
, Lens.use
, Lens.preuse
#if MIN_VERSION_base(4,10,0)
, Clock.nominalDay
#else
, nominalDay
#endif
, Text
, HashMap
, Seq
, Set
, Time.UTCTime
, Time.TimeZoneSeries
, Time.NominalDiffTime
)
where
#if !MIN_VERSION_base(4,11,0)
import Data.Semigroup ( (<>) )
#endif
import Control.Applicative ( (<|>) )
import qualified Control.Monad as Monad
import qualified Control.Monad.IO.Class as Monad
import qualified Data.Foldable as Foldable
import qualified Data.List as List
import qualified Data.Maybe as Maybe
import qualified Data.Time as Time
#if MIN_VERSION_base(4,10,0)
import qualified Data.Time.Clock as Clock
#endif
import qualified Data.Time.LocalTime.TimeZone.Series as Time
import qualified GHC.Exts as Exts
import qualified Lens.Micro.Platform as Lens
import Prelude.Compat
import qualified Prelude.Compat as P
import qualified Text.Read as Read
import Data.HashMap.Strict ( HashMap )
import Data.Sequence ( Seq )
import Data.Set ( Set )
import Data.Text ( Text )
#if !MIN_VERSION_base(4,10,0)
nominalDay :: Time.NominalDiffTime
nominalDay = 86400
#endif