sockets-and-pipes: Support for the Sockets and Pipes book

[ apache, http, library, network, streaming, text ] [ Propose Tags ]

This package contains some utilities that support Sockets and Pipes (available on Leanpub), as well as re-exports from all the libraries mentioned in the book.

Code in this package

Original contributions from this package:


List of modules that make a significant appearance in each chapter:

Chapter Module Purpose
1 Handles System.IO Writing to a file
Control.Exception.Safe Using bracket to ensure the file handle is closed
2 Chunks Data.Text Text is a chunk of characters
Data.Text.IO Reading and writing files using Text instead of String
3 Bytes Data.Word What a byte is
Data.ByteString ByteString is a chunk of bytes
Data.Text.Encoding Conversions between ByteString and Text
Data.String How ByteString works with OverloadedStrings
System.IO Putting Handles into binary mode
4 Sockets Network.Socket Opening and closing sockets
Network.Socket.ByteString Writing to and reading from sockets
System.Timeout Giving up quickly when a service does not respond
5 HTTP ASCII Expressing HTTP messages as strings
SocketsAndPipes.Serve Our first rudimentary web server
6 HTTP types Data.ByteString Defining datatypes for the parts of an HTTP message
7 Encoding Data.Text.Lazy Efficient string concatenations
Data.Time Simple performance testing
Data.Foldable Encoding repetitions with foldMap
8 Responding Network.Socket.ByteString.Lazy Sending responses constructed by bytestring Builder
SocketsAndPipes.Serve New web server using the encoding functions
Data.Int Contrasting Integer, Int, and Int64
9 Content types Data.Text.Lazy.Builder.Int Building a text response body
Text.Blaze.Html Building an HTML response body
Data.Aeson Building a JSON response body
10 Change Control.Concurrent.STM.TVar Shared state for request-handling threads
11 Streaming The remaining chapters are in progress.
12 Request parsing
13 Reading headers
14 Body parsing
15 Connection reuse
16 Pipes


Re-exported modules, grouped by the package that each module originally comes from:

ascii - ASCII, ASCII.Char

aeson - Data.Aeson

async - Control.Concurrent.Async


blaze-html - Text.Blaze.Html, Text.Blaze.Html5, Text.Blaze.Html5.Attributes, Text.Blaze.Html.Renderer.Utf8



safe-exceptions - Control.Exception.Safe

stm - Control.Monad.STM, Control.Concurrent.STM.TVar


time - Data.Time

Versions [faq] 0.1
Dependencies aeson (>=1.3 && <1.6), ascii (==1.0.*), async (==2.2.*), base (>=4.12 && <4.16), blaze-html (==0.9.*), bytestring (==0.10.*), containers (>=0.5.7 && <0.7), network (>=3.1.2 && <3.2), safe-exceptions (==0.1.*), stm (==2.5.*), text (>=1.2.3 && <1.3), time (>=1.9 && <1.12) [details]
License Apache-2.0
Author Chris Martin, Julie Moronuki
Maintainer Joy of Haskell <>
Revised Revision 4 made by chris_martin at 2021-02-25T09:14:56Z
Category HTTP, Network, Streaming, Text
Source repo head: git clone git://
Uploaded by chris_martin at 2021-02-19T22:01:34Z
Distributions NixOS:0.1
Downloads 59 total (4 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2021-02-19 [all 1 reports]


[Index] [Quick Jump]

    • ASCII.Char
  • Control
    • Concurrent
      • Control.Concurrent.Async
      • Control.Concurrent.STM
        • Control.Concurrent.STM.TVar
    • Exception
      • Control.Exception.Safe
    • Control.Monad
      • Control.Monad.STM
  • Data
    • Data.Aeson
    • Data.ByteString
      • Data.ByteString.Builder
      • Data.ByteString.Char8
      • Data.ByteString.Lazy
    • Data.Char
    • Data.Foldable
    • Data.Int
    • Data.List
    • Data.Text
      • Data.Text.Encoding
      • Data.Text.IO
      • Data.Text.Lazy
        • Data.Text.Lazy.Builder
          • Data.Text.Lazy.Builder.Int
        • Data.Text.Lazy.Encoding
        • Data.Text.Lazy.IO
    • Data.Time
    • Data.Word
  • Network
    • Network.Socket
      • Network.Socket.ByteString
        • Network.Socket.ByteString.Lazy
  • SocketsAndPipes
  • System
    • System.IO
    • System.Timeout
  • Text
    • Blaze
      • Text.Blaze.Html
        • Renderer
          • Text.Blaze.Html.Renderer.Utf8
      • Text.Blaze.Html5
        • Text.Blaze.Html5.Attributes


Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees