Browse Source

Add basic README file

master
Peter J. Jones 5 years ago
parent
commit
451f77edf5
1 changed files with 36 additions and 0 deletions
  1. 36
    0
      README.md

+ 36
- 0
README.md View File

@@ -0,0 +1,36 @@
1
+# Haskell / io-streams Implementation of `wc`
2
+
3
+This repository contains an implementation of the POSIX `wc` utility
4
+written in Haskell using the [io-streams] [] library.  It was written
5
+to demonstrate the io-streams library for the
6
+[Boulder Haskell Programmers] [bhp] user group.
7
+
8
+## The Basics of the io-streams Library
9
+
10
+The [io-streams] [] library allows you to write stream processing code
11
+that runs in constant space.  It's a streaming library similar to
12
+[Conduit] [] and [Pipes] [] but with significantly fewer features.
13
+
14
+Basic features:
15
+
16
+  * Values are read from an `InputStream`
17
+  * `InputStream`s produce a `Maybe a`; `Nothing` means `EOF`
18
+  * Values are written to an `OutputStream`
19
+  * `OutputStream`s accept a `Maybe a`
20
+  * Streams can be files, sockets, vectors, parsers, etc.
21
+
22
+## Pros and Cons
23
+
24
+  * io-streams is great because...
25
+    - It's really easy to learn and use
26
+    - Stream processing is very fast
27
+    - It's easy to compose stream functions together
28
+
29
+  * io-streams is less desirable because...
30
+    - It makes heavy use of the `IO` type
31
+    - Limited functionality compared to Conduit and Pipes
32
+
33
+[io-streams]: https://hackage.haskell.org/package/io-streams
34
+[bhp]: http://www.meetup.com/Boulder-Haskell-Programmers/
35
+[conduit]: https://hackage.haskell.org/package/conduit
36
+[pipes]: https://hackage.haskell.org/package/pipes

Loading…
Cancel
Save