module Prelude.Plus (
module Control.Applicative
, module Control.Arrow
, module Control.Monad
, module Control.Exception
, module Control.Category
, module Data.Traversable
, module Data.Foldable
, module Data.Monoid
, module Data.List
, module Data.Function
, module Data.Ord
, module Prelude
, module System.IO
, module System.IO.UTF8
, module System.Environment.UTF8
, dup, swap
, null, size
) where
import Prelude hiding (
catch,ioError
, appendFile,getContents,getLine,interact
, print,putStr,putStrLn,readFile,readLn,writeFile
, foldr,all,and,any,concat,concatMap,elem,null
, foldl,foldr1,notElem,or,mapM,sequence,mapM_,sequence_,foldl1
, maximum,minimum,product,sum
, id,(.))
import Control.Applicative
import Control.Arrow
import Control.Exception
import Control.Monad hiding (
mapM,sequence,forM,mapM_,sequence_,forM_,msum,Monad(..),(=<<),Functor(..))
import Control.Category (id, (.))
import Data.Traversable
import Data.Foldable
import Data.Monoid
import Data.List hiding (
foldr,all,and,any,concat,concatMap,elem,foldl,foldr1
, notElem,or,foldl1,maximum,minimum,product,sum,find,foldl'
, maximumBy,minimumBy,mapAccumL,mapAccumR,null
, (++),map,(!!),break,cycle,drop,dropWhile,filter
, head,init,iterate,last,length,lookup,repeat,replicate
, reverse,scanl,scanl1,scanr,scanr1,span,splitAt,tail,take
, takeWhile,unzip,unzip3,zip,zip3,zipWith,zipWith3,lines
, unlines,unwords,words )
import Data.Function hiding ((.),($),const,flip,id)
import Data.Ord (comparing)
import System.IO hiding (
IO,FilePath,appendFile,getContents,getLine,interact
, print,putStr,putStrLn,readFile,readLn,writeFile
, hGetContents,hGetLine,hPutStr,hPutStrLn
, openBinaryFile,withBinaryFile
, getChar,putChar,readIO )
import System.IO.UTF8
import System.Environment.UTF8
dup :: a -> (a,a)
dup a = (a,a)
swap :: (a,b) -> (b,a)
swap ~(a,b) = (b,a)
null :: (Foldable t) => t a -> Bool
null = foldr (const . const False) True
size :: (Foldable t) => t a -> Int
size = getSum . foldMap (const $ Sum 1)