name:                 relude
version:              1.2.2.0
visibility:           public
id:                   relude-1.2.2.0-5abXYtajg9MGuwupE3ZEQ3
key:                  relude-1.2.2.0-5abXYtajg9MGuwupE3ZEQ3
license:              MIT
copyright:            2016 Stephen Diehl, 2016-2018 Serokell, 2018-2023 Kowainik
maintainer:           Kowainik <xrom.xkov@gmail.com>
author:
    Dmitrii Kovanikov, Veronika Romashkina, Stephen Diehl, Serokell

stability:            stable
homepage:             https://github.com/kowainik/relude
synopsis:
    Safe, performant, user-friendly and lightweight Haskell Standard Library

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

    == Relude goals and design principles
    * __Productivity.__ You can be more productive with a "non-standard" standard
      library, and @relude@ helps you with writing safer and more
      efficient code faster.

    * __Total programming__. Usage of [/partial functions/](https://www.reddit.com/r/haskell/comments/5n51u3/why_are_partial_functions_as_in_head_tail_bad/)
      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.

        +---------------------------------+--------------------------------------------+
        | __Partial__                     | __Total__                                  |
        +=================================+============================================+
        | @head :: [a] -> a@              | @head :: NonEmpty a -> a@                  |
        +---------------------------------+--------------------------------------------+
        | @tail :: [a] -> [a]@            | @tail :: NonEmpty a -> [a]@                |
        +---------------------------------+--------------------------------------------+
        | @read :: Read a => String -> a@ | @readMaybe :: Read a => String -> Maybe a@ |
        +---------------------------------+--------------------------------------------+
        | @fromJust :: Maybe a -> a@      | @fromMaybe :: a -> Maybe a -> a@           |
        +---------------------------------+--------------------------------------------+

    * __Type-safety__. We use the /"make invalid states unrepresentable"/ motto as one
      of our guiding principles. If it is possible, we express this concept through the
      types.

        /Example:/ @ whenNotNull :: Applicative f => [a] -> (NonEmpty a -> f ()) -> f () @

    * __Performance.__ We prefer @Text@ over @[String](https://www.reddit.com/r/haskell/comments/29jw0s/whats_wrong_with_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](https://raw.githubusercontent.com/kowainik/relude/main/relude-dependency-graph.png)
      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:

        1. No need to add @containers@, @unordered-containers@, @text@
           and @bytestring@ to dependencies in your @.cabal@ file to
           use the main API of these libraries
        2. No need to import types like @NonEmpty@, @Text@, @Set@, @Reader[T]@, @MVar@, @STM@
        3. Functions like @liftIO@, @fromMaybe@, @sortWith@ are available by default as well
        4. @IO@ actions are lifted to @MonadIO@

    * __Excellent documentation.__

        1. Tutorial
        2. Migration guide from @Prelude@
        3. Haddock for every function with examples tested by
           [doctest](http://hackage.haskell.org/package/doctest).
        4. Documentation regarding [internal module structure](http://hackage.haskell.org/package/relude/docs/Relude.html)
        5. @relude@-specific [HLint](http://hackage.haskell.org/package/hlint) rules: @[.hlint.yaml](https://github.com/kowainik/relude/blob/main/.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.

category:             Prelude
abi:                  4726888324356a9b090fe07dfaa30d21
exposed:              True
exposed-modules:
    Data.ByteString from bytestring-0.12.1.0-inplace:Data.ByteString,
    Data.ByteString.Builder from bytestring-0.12.1.0-inplace:Data.ByteString.Builder,
    Data.ByteString.Lazy from bytestring-0.12.1.0-inplace:Data.ByteString.Lazy,
    Data.ByteString.Short from bytestring-0.12.1.0-inplace:Data.ByteString.Short,
    Data.HashMap.Lazy from unordered-containers-0.2.20-DmA1der3vIe6VwQRGylcdv:Data.HashMap.Lazy,
    Data.HashMap.Strict from unordered-containers-0.2.20-DmA1der3vIe6VwQRGylcdv:Data.HashMap.Strict,
    Data.HashSet from unordered-containers-0.2.20-DmA1der3vIe6VwQRGylcdv:Data.HashSet,
    Data.IntMap.Lazy from containers-0.7-inplace:Data.IntMap.Lazy,
    Data.IntMap.Strict from containers-0.7-inplace:Data.IntMap.Strict,
    Data.IntSet from containers-0.7-inplace:Data.IntSet,
    Data.Map.Lazy from containers-0.7-inplace:Data.Map.Lazy,
    Data.Map.Strict from containers-0.7-inplace:Data.Map.Strict,
    Data.Sequence from containers-0.7-inplace:Data.Sequence,
    Data.Set from containers-0.7-inplace:Data.Set,
    Data.Text from text-2.1.1-inplace:Data.Text,
    Data.Text.IO from text-2.1.1-inplace:Data.Text.IO,
    Data.Text.Lazy from text-2.1.1-inplace:Data.Text.Lazy,
    Data.Text.Lazy.IO from text-2.1.1-inplace:Data.Text.Lazy.IO,
    Data.Text.Read from text-2.1.1-inplace:Data.Text.Read,
    Data.Tree from containers-0.7-inplace:Data.Tree, Relude,
    Relude.Applicative, Relude.Base, Relude.Bool, Relude.Bool.Guard,
    Relude.Bool.Reexport, Relude.Container, Relude.Container.One,
    Relude.Container.Reexport, Relude.Debug, Relude.DeepSeq,
    Relude.Enum, Relude.Exception, Relude.Extra,
    Relude.Extra.Bifunctor, Relude.Extra.CallStack, Relude.Extra.Enum,
    Relude.Extra.Foldable, Relude.Extra.Foldable1, Relude.Extra.Group,
    Relude.Extra.Lens, Relude.Extra.Map, Relude.Extra.Newtype,
    Relude.Extra.Tuple, Relude.Extra.Type, Relude.File,
    Relude.Foldable, Relude.Foldable.Fold, Relude.Foldable.Reexport,
    Relude.Function, Relude.Functor, Relude.Functor.Fmap,
    Relude.Functor.Reexport, Relude.Lifted, Relude.Lifted.Concurrent,
    Relude.Lifted.Env, Relude.Lifted.Exit, Relude.Lifted.File,
    Relude.Lifted.Handle, Relude.Lifted.IORef, Relude.Lifted.Terminal,
    Relude.List, Relude.List.NonEmpty, Relude.List.Reexport,
    Relude.Monad, Relude.Monad.Either, Relude.Monad.Maybe,
    Relude.Monad.Reexport, Relude.Monad.Trans, Relude.Monoid,
    Relude.Nub, Relude.Numeric, Relude.Print, Relude.String,
    Relude.String.Conversion, Relude.String.Reexport, Relude.Unsafe

import-dirs:
    /usr/pkg/lib/aarch64-netbsd-ghc-9.10.1/relude-1.2.2.0-5abXYtajg9MGuwupE3ZEQ3

library-dirs:
    /usr/pkg/lib/aarch64-netbsd-ghc-9.10.1/relude-1.2.2.0-5abXYtajg9MGuwupE3ZEQ3

library-dirs-static:
    /usr/pkg/lib/aarch64-netbsd-ghc-9.10.1/relude-1.2.2.0-5abXYtajg9MGuwupE3ZEQ3

dynamic-library-dirs: /usr/pkg/lib/aarch64-netbsd-ghc-9.10.1
data-dir:             /usr/pkg/share/aarch64-netbsd-ghc-9.10.1/relude-1.2.2.0
hs-libraries:         HSrelude-1.2.2.0-5abXYtajg9MGuwupE3ZEQ3
depends:
    base-4.20.0.0-inplace bytestring-0.12.1.0-inplace
    containers-0.7-inplace deepseq-1.5.0.0-inplace
    ghc-prim-0.11.0-inplace hashable-1.5.0.0-93vVlDWTvOTF1kJlBpPOXB
    mtl-2.3.1-inplace stm-2.5.3.1-inplace text-2.1.1-inplace
    transformers-0.6.1.1-inplace
    unordered-containers-0.2.20-DmA1der3vIe6VwQRGylcdv

haddock-interfaces:
    /usr/pkg/share/doc/aarch64-netbsd-ghc-9.10.1/relude-1.2.2.0/html/relude.haddock

haddock-html:
    /usr/pkg/share/doc/aarch64-netbsd-ghc-9.10.1/relude-1.2.2.0/html
