Cross-platform file handling for Unix/Mac/Windows.
Optimized edit distances for fuzzy matching, including Levenshtein and
restricted Damerau-Levenshtein algorithms.
An either monad transformer.
Catching all exceptions raised within an enclosed computation, while
remaining responsive to (external) asynchronous exceptions.
Typical buffer-based incremental I/O is based around a single loop,
which reads data from some source (such as a socket or file), transforms
it, and generates one or more outputs (such as a line count, HTTP
responses, or modified file). Although efficient and safe, these loops are
all single-purpose; it is difficult or impossible to compose
buffer-based processing loops.
Haskell's concept of "lazy I/O" allows pure code to operate on data from an
external source. However, lazy I/O has several shortcomings. Most notably,
resources such as memory and file handles can be retained for arbitrarily
long periods of time, causing unpredictable performance and error conditions.
Enumerators are an efficient, predictable, and safe alternative to lazy
I/O. Discovered by Oleg Kiselyov, they allow large datasets to be processed
in near constant space by pure code. Although somewhat more complex
to write, using enumerators instead of lazy I/O produces more correct
programs.
This library contains an enumerator implementation for Haskell, designed to
be both simple and efficient.
This is an implementation of Tarjan's Union-Find algorithm (Robert E.
Tarjan. "Efficiency of a Good But Not Linear Set Union Algorithm", JACM
22(2), 1975) in order to maintain an equivalence relation.
The one-stop shop for all your error-handling needs! Just import
"Control.Error". This library encourages an error-handling style that directly
uses the type system, rather than out-of-band exceptions.
Extensible optionally-pure exceptions.
This package provides extensible exceptions for both new and old versions
of GHC (i.e., < 6.10).
A library of extra functions for the standard Haskell libraries. Most
functions are simple additions, filling out missing functionality. A few
functions are available in later versions of GHC, but this package makes
them available back to GHC 7.2. The module "Extra" documents all functions
provided by this library. Modules such as "Data.List.Extra" provide extra
functions over "Data.List" and also reexport "Data.List". Users are
recommended to replace "Data.List" imports with "Data.List.Extra" if they
need the extra functionality.