MyNixOS website logo
Description

Safe and minimal prelude.

Intro is a modern Prelude which provides safe alternatives for most of the partial functions and follows other best practices, e.g., Text is preferred over String. For String overloading the extension OverloadedStrings should be used. Container types and Monad transformers are provided.

Most important - this Prelude tries to keep things simple. This means it just reexports from base and commonly used libraries and adds only very few additional functions. Everything is exported explicitly to provide a stable interface and to improve the quality of the documentation.

Intro: Safe and minimal Haskell Prelude

Hackage Build Status

Intro is a modern Prelude which provides safe alternatives for most of the partial functions and follows other best practices, e.g., Text is preferred over String. For String overloading the extension 'OverloadedStrings' should be used. Container types and Monad transformers are provided.

Most important - this Prelude tries to keep things simple and minimal. This means it just reexports from base and commonly used libraries and adds only very few additional functions.

List of design decisions:

  • Keep everything at one place
  • Conservative extension over the base Prelude
  • Rely only on common additional libraries
  • Avoid writing custom functions
  • Export everything explicitly to provide a stable interface and good documentation
  • Export only total functions or provide safe alternatives (Very few exceptions like div etc.)
  • Prefer Text over String, provide ConvertString and EncodeString
  • Provide monad transformers
  • Provide container types
  • Prefer generic functions
  • Debugging functions, like 'Intro.Trustworthy.trace' and 'undefined' are available but produce compile time warnings
  • Replace error with panic
  • Compatibility with unqualified import of Control.Lens and Optics.
Metadata

Version

0.9.0.0

License

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows