summaryrefslogtreecommitdiff
path: root/dev-haskell/enumerator/metadata.xml
diff options
context:
space:
mode:
Diffstat (limited to 'dev-haskell/enumerator/metadata.xml')
-rw-r--r--dev-haskell/enumerator/metadata.xml47
1 files changed, 0 insertions, 47 deletions
diff --git a/dev-haskell/enumerator/metadata.xml b/dev-haskell/enumerator/metadata.xml
deleted file mode 100644
index 3e0ee48d3525..000000000000
--- a/dev-haskell/enumerator/metadata.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
- <maintainer type="project">
- <email>haskell@gentoo.org</email>
- <name>Gentoo Haskell</name>
- </maintainer>
- <longdescription>
- Typical buffer&amp;#x2013;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&amp;#x2013;purpose; it is difficult or impossible to compose
- buffer&amp;#x2013;based processing loops.
-
- Haskell&amp;#x2019;s concept of &amp;#x201C;lazy I/O&amp;#x201D; 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&amp;#x2013;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. Three core types are defined, along with
- numerous helper functions:
-
- * /Iteratee/: Data sinks, analogous to left folds. Iteratees consume
- a sequence of /input/ values, and generate a single /output/ value.
- Many iteratees are designed to perform side effects (such as printing to
- @stdout@), so they can also be used as monad transformers.
-
- * /Enumerator/: Data sources, which generate input sequences. Typical
- enumerators read from a file handle, socket, random number generator, or
- other external stream. To operate, enumerators are passed an iteratee, and
- provide that iteratee with input until either the iteratee has completed its
- computation, or EOF.
-
- * /Enumeratee/: Data transformers, which operate as both enumerators and
- iteratees. Enumeratees read from an /outer/ enumerator, and provide the
- transformed data to an /inner/ iteratee.
- </longdescription>
-</pkgmetadata>