New approach to custom Prelude.

We use no custom Prelude with the latest ghc version (8.4.1),
so we don't have problems with ghci.

See https://ghc.haskell.org/trac/ghc/ticket/10920
https://www.reddit.com/r/haskell/comments/3ryf2p/how_can_you_use_a_custom_prelude_with_ghci/

This may help with #4464.
This commit is contained in:
John MacFarlane 2018-03-18 09:20:21 -07:00
parent 09a32de173
commit dd53545154
2 changed files with 38 additions and 14 deletions

View file

@ -11,7 +11,7 @@ bug-reports: https://github.com/jgm/pandoc/issues
stability: alpha stability: alpha
homepage: https://pandoc.org homepage: https://pandoc.org
category: Text category: Text
tested-with: GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2 tested-with: GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.1
synopsis: Conversion between markup formats synopsis: Conversion between markup formats
description: Pandoc is a Haskell library for converting from one markup description: Pandoc is a Haskell library for converting from one markup
format to another, and a command-line tool that uses format to another, and a command-line tool that uses
@ -398,8 +398,12 @@ library
http-client-tls >= 0.2.4 && < 0.4, http-client-tls >= 0.2.4 && < 0.4,
http-types >= 0.8 && < 0.13, http-types >= 0.8 && < 0.13,
case-insensitive >= 1.2 && < 1.3 case-insensitive >= 1.2 && < 1.3
if !impl(ghc >= 8.0) if impl(ghc < 8.0)
build-depends: semigroups == 0.18.* build-depends: semigroups == 0.18.*
if impl(ghc < 8.4)
hs-source-dirs: prelude
other-modules: Prelude
build-depends: base-compat >= 0.9
if os(windows) if os(windows)
cpp-options: -D_WINDOWS cpp-options: -D_WINDOWS
else else
@ -563,8 +567,12 @@ library
executable pandoc executable pandoc
build-depends: pandoc, base >= 4.7 && < 5 build-depends: pandoc, base >= 4.7 && < 5
if !impl(ghc >= 8.0) if impl(ghc < 8.0)
build-depends: semigroups == 0.18.* build-depends: semigroups == 0.18.*
if impl(ghc < 8.4)
hs-source-dirs: prelude
other-modules: Prelude
build-depends: base-compat >= 0.9
ghc-options: -rtsopts -with-rtsopts=-K16m -Wall -fno-warn-unused-do-bind -threaded ghc-options: -rtsopts -with-rtsopts=-K16m -Wall -fno-warn-unused-do-bind -threaded
if flag(static) if flag(static)
ld-options: -static ld-options: -static
@ -590,8 +598,12 @@ executable trypandoc
buildable: True buildable: True
else else
buildable: False buildable: False
if !impl(ghc >= 8.0) if impl(ghc < 8.0)
build-depends: semigroups == 0.18.* build-depends: semigroups == 0.18.*
if impl(ghc < 8.4)
hs-source-dirs: prelude
other-modules: Prelude
build-depends: base-compat >= 0.9
executable weigh-pandoc executable weigh-pandoc
main-is: weigh-pandoc.hs main-is: weigh-pandoc.hs
@ -606,8 +618,12 @@ executable weigh-pandoc
buildable: True buildable: True
else else
buildable: False buildable: False
if !impl(ghc >= 8.0) if impl(ghc < 8.0)
build-depends: semigroups == 0.18.* build-depends: semigroups == 0.18.*
if impl(ghc < 8.4)
hs-source-dirs: prelude
other-modules: Prelude
build-depends: base-compat >= 0.9
ghc-options: -rtsopts -Wall -fno-warn-unused-do-bind ghc-options: -rtsopts -Wall -fno-warn-unused-do-bind
default-language: Haskell98 default-language: Haskell98
@ -638,8 +654,12 @@ test-suite test-pandoc
zip-archive >= 0.2.3.4 && < 0.4, zip-archive >= 0.2.3.4 && < 0.4,
xml >= 1.3.12 && < 1.4, xml >= 1.3.12 && < 1.4,
Glob >= 0.7 && < 0.10 Glob >= 0.7 && < 0.10
if !impl(ghc >= 8.0) if impl(ghc < 8.0)
build-depends: semigroups == 0.18.* build-depends: semigroups == 0.18.*
if impl(ghc < 8.4)
hs-source-dirs: prelude
other-modules: Prelude
build-depends: base-compat >= 0.9
if flag(old-locale) if flag(old-locale)
build-depends: old-locale >= 1 && < 1.1, build-depends: old-locale >= 1 && < 1.1,
time >= 1.2 && < 1.5 time >= 1.2 && < 1.5
@ -706,7 +726,11 @@ benchmark benchmark-pandoc
base >= 4.2 && < 5, base >= 4.2 && < 5,
text >= 0.11 && < 1.3, text >= 0.11 && < 1.3,
criterion >= 1.0 && < 1.5 criterion >= 1.0 && < 1.5
if !impl(ghc >= 8.0) if impl(ghc < 8.0)
build-depends: semigroups == 0.18.* build-depends: semigroups == 0.18.*
if impl(ghc < 8.4)
hs-source-dirs: prelude
other-modules: Prelude
build-depends: base-compat >= 0.9
ghc-options: -rtsopts -Wall -fno-warn-unused-do-bind ghc-options: -rtsopts -Wall -fno-warn-unused-do-bind
default-language: Haskell98 default-language: Haskell98

View file

@ -1,17 +1,17 @@
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE PackageImports #-} {-# LANGUAGE PackageImports #-}
{-# LANGUAGE CPP #-} {-# LANGUAGE CPP #-}
-- The intent is that this Prelude provide the API of
-- the base 4.11 Prelude in a way that is portable for
-- all base versions.
module Prelude module Prelude
( (
module P module Prelude.Compat
, Monoid(..)
, Semigroup(..) , Semigroup(..)
, Applicative(..)
) )
where where
import "base" Prelude as P import Prelude.Compat
import Data.Semigroup (Semigroup(..)) -- includes (<>) import Data.Semigroup (Semigroup(..)) -- includes (<>)
#if MIN_VERSION_base(4,11,0)
import Data.Monoid (Monoid(..))
#endif