module Prelude.Classy(
module Data.Bool,
bool,
module Data.Maybe,
module Data.Either,
module Data.Eq,
module Data.Ord,
Enum(..),
Char, String(..), fst, snd, lines, words, unlines, unwords, Show(..), Read(..), read,
IO, putChar, putStr, putStrLn, print, getChar, getLine, readFile, writeFile, appendFile,
readIO, readLn,
curry, uncurry, first, second, id, const, (.), flip, ($), until,
Int, Integer, Bounded(..), Num(..), Integral(..),
subtract, even, odd, (^), fromIntegral,
module Control.Applicative,
module Control.Monad,
module Data.Monoid, (<>),
module Data.Foldable,
module Data.Traversable,
asTypeOf, error, undefined, seq, ($!)
) where
import Data.Bool
import Data.Maybe
import Data.Either
import Data.Ord
import Data.Eq
import Prelude(Char,String(..),fst,snd,curry,uncurry,Bounded(..), Num(..),
Integral(..), Enum(..), lines, words, unlines, unwords, Show(..),
Read(..), read, IO, putChar, putStr, putStrLn, print, getChar, writeFile,
appendFile, readIO, readLn, getLine, id, const, (.), flip, until,
asTypeOf, error, undefined, seq, subtract, even, odd, (^), fromIntegral, Int, Integer)
import Control.Arrow(first,second)
import Control.Applicative
import Control.Monad hiding(mapM, mapM_, sequence, sequence_, forM, forM_, msum)
import Data.Monoid
import Data.Foldable
import Data.Traversable
import System.IO.Strict(readFile)
bool :: a
-> a
-> Bool
-> a
bool a _ True = a
bool _ a False = a
infixr 5 <>
a <> b = mappend a b
filter :: (Monad m, Monoid (m a), Foldable t) => (a -> Bool) -> t a -> m a
filter p = foldMap (\a -> bool (return a) mempty (p a))
infixl 0 $, $!
f $ x = f x
f $! x = x `seq` f x