Hoogle Search
Within LTS Haskell 23.3 (ghc-9.8.4)
Note that Stackage only displays results for the latest LTS and Nightly snapshot. Learn more.
-
Core data structures and operations Haskell's base library provides, among other things, core types (e.g. Bool and Int), data structures (e.g. List, Tuple and Maybe), the Exception mechanism, and the IO & Concurrency operations. The Prelude module, which is imported by default, exposes a curated set of types and functions from other modules. Other data structures like Map, Set are available in the containers library. To work with textual data, use the text library.
-
Fast, compact, strict and lazy byte strings with a list interface An efficient compact, immutable byte string type (both strict and lazy) suitable for binary or 8-bit character data. The ByteString type represents sequences of bytes or 8-bit characters. It is suitable for high performance use, both in terms of large data quantities, or high speed requirements. The ByteString functions follow the same style as Haskell's ordinary lists, so it is easy to convert code from using String to ByteString. Two ByteString variants are provided:
- Strict ByteStrings keep the string as a single large array. This makes them convenient for passing data between C and Haskell.
- Lazy ByteStrings use a lazy list of strict chunks which makes it suitable for I/O streaming tasks.
import qualified Data.ByteString as BS
-
An efficient packed Unicode text type. An efficient packed, immutable Unicode text type (both strict and lazy). The Text type represents Unicode character strings, in a time and space-efficient manner. This package provides text processing capabilities that are optimized for performance critical use, both in terms of large data quantities and high speed. The Text type provides character-encoding, type-safe case conversion via whole-string case conversion functions (see Data.Text). It also provides a range of functions for converting Text values to and from ByteStrings, using several standard encodings (see Data.Text.Encoding). Efficient locale-sensitive support for text IO is also supported (see Data.Text.IO). These modules are intended to be imported qualified, to avoid name clashes with Prelude functions, e.g.
import qualified Data.Text as T
ICU Support
To use an extended and very rich family of functions for working with Unicode text (including normalization, regular expressions, non-standard encodings, text breaking, and locales), see the text-icu package based on the well-respected and liberally licensed ICU library. -
Assorted concrete container types This package contains efficient general-purpose implementations of various immutable container types including sets, maps, sequences, trees, and graphs. For a walkthrough of what this package provides with examples of common operations see the containers introduction. The declared cost of each operation is either worst-case or amortized, but remains valid even if structures are shared.
-
Concrete functor and monad transformers A portable library of functor and monad transformers, inspired by the paper
- "Functional Programming with Overloading and Higher-Order Polymorphism", by Mark P Jones, in Advanced School of Functional Programming, 1995 (http://web.cecs.pdx.edu/~mpj/pubs/springschool.html).
- the monad transformer class (in Control.Monad.Trans.Class)
- concrete functor and monad transformers, each with associated operations and functions to lift operations associated with other transformers.
-
Automatic testing of Haskell programs QuickCheck is a library for random testing of program properties. The programmer provides a specification of the program, in the form of properties which functions should satisfy, and QuickCheck then tests that the properties hold in a large number of randomly generated cases. Specifications are expressed in Haskell, using combinators provided by QuickCheck. QuickCheck provides combinators to define properties, observe the distribution of test data, and define test data generators. Most of QuickCheck's functionality is exported by the main Test.QuickCheck module. The main exception is the monadic property testing library in Test.QuickCheck.Monadic. If you are new to QuickCheck, you can try looking at the following resources:
- The official QuickCheck manual. It's a bit out-of-date in some details and doesn't cover newer QuickCheck features, but is still full of good advice.
- https://begriffs.com/posts/2017-01-14-design-use-quickcheck.html, a detailed tutorial written by a user of QuickCheck.
-
A Testing Framework for Haskell Hspec is a testing framework for Haskell. Some of Hspec's distinctive features are:
- a friendly DSL for defining tests
- integration with QuickCheck, SmallCheck, and HUnit
- parallel test execution
- automatic discovery of test files
-
Monad classes for transformers, using functional dependencies MTL is a collection of monad classes, extending the transformers package, using functional dependencies for generic lifting of monadic actions.
-
Modern and extensible testing framework Tasty is a modern testing framework for Haskell. It lets you combine your unit tests, golden tests, QuickCheck/SmallCheck properties, and any other types of tests into a single test suite.
-
Deep evaluation of data structures This package provides methods for fully evaluating data structures ("deep evaluation"). Deep evaluation is often used for adding strictness to a program, e.g. in order to force pending exceptions, remove space leaks, or force lazy I/O to happen. It is also useful in parallel programs, to ensure pending work does not migrate to the wrong thread. The primary use of this package is via the deepseq function, a "deep" version of seq. It is implemented on top of an NFData typeclass ("Normal Form Data", data structures with no unevaluated components) which defines strategies for fully evaluating different data types. See module documentation in Control.DeepSeq for more details.
Page 1 of many | Next