Chat demonstration. (http://www.haskellnow.org/Chat)

root

# Overview

This is a 2-3 hour group exercise for learning basics of concurrency
primitives in Haskell, multicast network protocols, and interacting in
real time with people on a shared network.

Contributions to this project are welcome under the guidelines of
[Coraline's Contributor Covenant](https://github.com/bantik/contributor_covenant).

The goals are to create a local network multicast system that:

1. Handles choosing a unique name
2. Announces this name
3. Receives other name announcements
4. Broadcasts messages to the network
5. Prints received messages from the network

Topics covered will include:

1. Protocol design
2. Command String Parsing
3. Multicast Sockets
4. Addressing and Ports
5. Asynchronous execution

The emphasis will be on writitng as much in pure code as possible, and
then using I/O as a minimal wrapper for the pure code.

# Introduction

## Darcs

Since the source is distributed as a Darcs repository, make sure you
have darcs installed. Darcs can be installed from cabal:

    cabal install darcs

## Cabal

This is a Cabal package. It can be built in place using a Cabal
sandbox. These instructions will work if you have at least Cabal 1.18
installed, which should come with any recent Haskell Platform. So,
after unpacking the source for this project, change to the directory
with this README and run the following:

    cabal sandbox init
    cabal install

This will put the executable in `.cabal-sandbox/bin/noth-chat`.

Then, to build the documentation for the module:

    cabal setup
    cabal haddock --executables

The documentation and tutorials on the code will then be built in:

    dist/doc/html/noth-chat/noth-chat/index.html