diff --git a/README.md b/README.md new file mode 100644 index 0000000..db73d43 --- /dev/null +++ b/README.md @@ -0,0 +1,55 @@ +# From Functional I/O to Functional Systems Programming + +Support code for ICFP submission. + +This is a [Racket](http://racket-lang.org/) package containing a +single +[collection](http://docs.racket-lang.org/reference/collects.html), +`marketplace`, which includes + + - the implementation of the `#lang marketplace` language from the + paper, in + [`marketplace/`](https://github.com/tonyg/marketplace/tree/master/marketplace/). + + - the echo server example from the paper, in + [`marketplace/examples/echo-paper3.rkt`](https://github.com/tonyg/marketplace/tree/master/marketplace/examples/echo-paper3.rkt). + + - the chat server example from the paper, in + [`marketplace/examples/chat-paper.rkt`](https://github.com/tonyg/marketplace/tree/master/marketplace/examples/chat-paper.rkt). + + - the Haskell, Erlang and Python implementations of the chat server + from the paper, in + [`marketplace/examples/chat.hs`](https://github.com/tonyg/marketplace/tree/master/marketplace/examples/chat.hs), + [`chat.erl`](https://github.com/tonyg/marketplace/tree/master/marketplace/examples/chat.erl), + and + [`chat.py`](https://github.com/tonyg/marketplace/tree/master/marketplace/examples/chat.py) + respectively. + +## How to compile and run the code + +You will need the latest **prerelease** version of Racket. Any version +newer than or equal to Racket 5.3.3.7 should work. Nightly-build +installers for Racket can be downloaded +[here](http://pre.racket-lang.org/installers/). + +Once you have Racket installed, run `make link` (or the equivalent +command from the makefile) from the root directory of the Git checkout +to install the package in your Racket system. This will make `#lang +marketplace` available to programs. + +At this point, you may load and run any of the example `*.rkt` files +in the +[`marketplace/examples/`](https://github.com/tonyg/marketplace/tree/master/marketplace/examples/) +directory. + +Note that both the echo server and chat server examples do not print +any output on standard output: instead, they simply start running and +silently await TCP connections. Once one of the servers is running, in +a separate window, try `telnet localhost 5999`. + +Note also that both the echo server and the chat server use port 5999, +so you cannot run both simultaneously. + +## Copyright + +Copyright © Tony Garnock-Jones 2010, 2011, 2012, 2013.