From ebb1806c4a53913599525fa8da355d29757d68b4 Mon Sep 17 00:00:00 2001 From: Joshua Potter Date: Sat, 25 Nov 2017 18:49:55 -0800 Subject: [PATCH] Setup default Prelude and basic documentation. --- README.md | 24 +++++++++- postlude.cabal | 7 +-- src/Main.hs | 5 --- src/Postlude.hs | 116 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 143 insertions(+), 9 deletions(-) delete mode 100644 src/Main.hs create mode 100644 src/Postlude.hs diff --git a/README.md b/README.md index 60bf451..4ddbb29 100644 --- a/README.md +++ b/README.md @@ -1 +1,23 @@ -# postlude +# Postlude + +A replacement to the default Prelude. + +## Usage + +Disable the built-in prelude at the top of your file: + +```haskell +{-# LANGUAGE NoImplicitPrelude #-} +``` + +Or directly in your project cabal file: + +```haskell +default-extensions: NoImplicitPrelude +``` + +Then in your modules: + +```haskell +import Postlude +``` diff --git a/postlude.cabal b/postlude.cabal index ce5cab1..7c81965 100644 --- a/postlude.cabal +++ b/postlude.cabal @@ -13,8 +13,9 @@ build-type: Simple cabal-version: >=1.10 extra-source-files: README.md -executable postlude +library + exposed-modules: Postlude hs-source-dirs: src - main-is: Main.hs default-language: Haskell2010 - build-depends: base >= 4.7 && < 5 + build-depends: base >= 4.7 && < 5, + mtl == 2.2.1 diff --git a/src/Main.hs b/src/Main.hs deleted file mode 100644 index 9cd992d..0000000 --- a/src/Main.hs +++ /dev/null @@ -1,5 +0,0 @@ -module Main where - -main :: IO () -main = do - putStrLn "hello world" diff --git a/src/Postlude.hs b/src/Postlude.hs new file mode 100644 index 0000000..352c4c5 --- /dev/null +++ b/src/Postlude.hs @@ -0,0 +1,116 @@ +{-# LANGUAGE NoImplicitPrelude #-} + +module Postlude (module X) where + +import Control.Applicative as X + ( (*>) + , (<$>) + , (<*) + , (<*>) + , Applicative + , pure + ) + +import Control.Arrow as X + ( (&&&) + , (***) + , Arrow + , arr + , first + , returnA + , second + ) + +import Control.Monad as X + ( Functor + , Monad + , MonadPlus + , (>>) + , (>>=) + , fail + , fmap + , return + ) + +import Control.Monad.Trans as X + ( MonadIO + , lift + , liftIO + ) + +import Data.Bool as X + ( Bool(..) + ) + +import Data.Char as X + ( Char + ) + +import Data.Either as X + ( Either(Left, Right) + ) + +import Data.Eq as X + ( Eq(..) + ) + +import Data.Function as X + ( ($) + , (.) + , id + ) + +import Data.Int as X + ( Int + , Int8 + , Int16 + , Int32 + , Int64 + ) + +import Data.Foldable as X + ( foldl1 + , foldr1 + ) + +import Data.Maybe as X + ( Maybe(Just, Nothing) + ) + +import Data.Monoid as X + ( Monoid + , mappend + , mconcat + , mempty + ) + +import Data.Ord as X + ( Ord(..) + ) + +import Data.Traversable as X + ( Traversable + , for + , forM + , mapM + , sequence + , sequenceA + , traverse + ) + +import System.Environment as X + ( getArgs + ) + +import System.IO as X + ( FilePath + , Handle + , IO + , IOMode(..) + , openFile + , print + , stderr + , stdin + , stdout + , withFile + )