An enhanced core prelude; a common foundation for alternate preludes.

LTS Haskell 22.29:0.7.0
Stackage Nightly 2024-07-18:0.7.0
Latest on Hackage:0.7.0

See all snapshots basic-prelude appears in

MIT licensed by Michael Snoyman, Dan Burton
Maintained by [email protected]
This version can be pinned in stack with:basic-prelude-0.7.0@sha256:efe61aec70e6f523435d46fcd18587f28febbb1bc7d20d20e5aa249d93ed9e96,1251

Module documentation for 0.7.0


The premise of basic-prelude is that there are a lot of very commonly desired features missing from the standard Prelude, such as commonly used operators (<$> and >=>, for instance) and imports for common datatypes (e.g., ByteString and Vector). At the same time, there are lots of other components which are more debatable, such as providing polymorphic versions of common functions.

So basic-prelude is intended to give a common foundation for a number of alternate preludes. The package provides two modules: CorePrelude provides the common ground for other preludes to build on top of, while BasicPrelude exports CorePrelude together with commonly used list functions to provide a drop-in replacement for the standard Prelude.

Users wishing to have an improved Prelude can use BasicPrelude. Developers wishing to create a new prelude should use CorePrelude.



  • Export applicative version of Foldable and Traversable functions #72
  • Generalize all IO functions to MonadIO #75
  • Use foldl1 for maximumBy and minimumBy #74
  • Remove nonexistent foldr' from Data.List hiding list
  • Remove the lifted-base dependency. This means that CorePrelude and BasicPrelude no longer expose any exception handling functions. This is intentional: the new recommendations from this library are to use an async-exception-aware exception handling library, either safe-exceptions or unliftio.

  • Add HasCallStack for terror


  • Generalize sum and product to Foldable #69


  • Export show from Show typeclass, and rename current show to tshow #67


  • Expose bool


  • Expose asum
  • Deprecate empty (so it can be replaced with Alternative’s empty)


  • Expose more Foldable/Traversable stuff


  • terror


  • Drop system-filepath


  • Export converters between FilePath <-> Text, String. #56


  • Add fromShow #55



  • Moved a number of exports from @BasicPrelude@ to @CorePrelude@ and vice-versa.


  • Renamed BasicPrelude to CorePrelude and added a new @BasicPrelude@ module provided a full-featured Prelude alternative. Also added a number of new exports.


  • Initial version, code taken from @classy-prelude@ with a few minor tweaks.