name: relude
description: relude is an alternative prelude library. If you find the default
Prelude unsatisfying, despite its advantages, consider using relude
instead.

Productivity. You can be more productive with a &quot;non-standard&quot; standard
  library, and relude helps you with writing safer and more
  efficient code faster.

Total programming. Usage of &lt;em&gt;partial functions&lt;/em&gt;
  can lead to unexpected bugs and runtime exceptions in pure
  code. The types of partial functions lie about their behaviour. And
  even if it is not always possible to rely only on total functions,
  relude strives to encourage best-practices and reduce the
  chances of introducing a bug.

Type-safety. We use the &quot;make invalid states unrepresentable&quot; motto as one
  of our guiding principles. If it is possible, we express this concept through the
  types.

Example:  whenNotNull :: Applicative f =&gt; [a] -&gt; (NonEmpty a -&gt; f ()) -&gt; f () 

Performance. We prefer Text over String,
  use space-leaks-free functions (e.g. our custom performant sum and product),
  introduce {-# INLINE #-} and {-# SPECIALIZE #-} pragmas where
  appropriate, and make efficient container types
  (e.g. Map, HashMap, Set) more accessible.

Minimalism (low number of dependencies). We do not force users of
  relude to stick to any specific lens or text formatting or logging
  library. Where possible, relude depends only on boot libraries.
  The Dependency graph
  of relude can give you a clearer picture.

Convenience. Despite minimalism, we want to bring commonly used
   types and functions into scope, and make available functions easier
   to use. Some examples of conveniences:

No need to add containers, unordered-containers, text
   and bytestring to dependencies in your .cabal file to
   use the main API of these libraries

No need to import types like NonEmpty, Text, Set, Reader[T], MVar, STM

Functions like liftIO, fromMaybe, sortWith are available by default as well

IO actions are lifted to MonadIO

Excellent documentation.

Tutorial

Migration guide from Prelude

Haddock for every function with examples tested by
   doctest.

Documentation regarding internal module structure

relude-specific HLint rules: .hlint.yaml

User-friendliness. Anyone should be able to quickly migrate to relude. Only
  some basic familiarity with the common libraries like text and containers
  should be enough (but not necessary).

Exploration. We have space to experiment with new ideas and proposals
  without introducing breaking changes. relude uses the approach with
  Extra.* modules which are not exported by default. The chosen approach makes it quite
  easy for us to provide new functionality without breaking anything and let
  the users decide to use it or not.
license_spdx: MIT
version: 0.1.0
spec_version: 1.0
download_url: http://hackage.haskell.org/package/relude-0.1.0/relude-0.1.0.tar.gz
home_url: 
                https://github.com/kowainik/relude
              
news_url: https://libraries.io/hackage/relude/versions.atom
date: 2018-07-21
about_resource: NONE
libraries_io_url: https://libraries.io/hackage/relude?number=0.1.0
vcs_tool: git
vcs_repository: https://github.com/kowainik/relude
vcs_branch: main
