Haskell Thrift Bindings

Running
=======

You need -fglasgow-exts. Use Cabal to compile and install. If you're trying to
manually compile or load via ghci, and you're using ghc 6.10 (or really if your
default base package has major version number 4), you must specify a version of
the base package with major version number 3. Furthermore if you have the syb
package installed you need to hide that package to avoid import conflicts.
Here's an example of what I'm talking about:

  ghci -fglasgow-exts -package base-3.0.3.0 -hide-package syb -isrc Thrift.hs

To determine which versions of the base package you have installed use the
following command:

  ghc-pkg list base

All of this is taken care of for you if you use Cabal.


Enums
=====

become haskell data types. Use fromEnum to get out the int value.

Structs
=======

become records. Field labels are ugly, of the form f_STRUCTNAME_FIELDNAME. All
fields are Maybe types.

Exceptions
==========

identical to structs. Throw them with throwDyn. Catch them with catchDyn.

Client
======

just a bunch of functions. You may have to import a bunch of client files to
deal with inheritance.

Interface
=========

You should only have to import the last one in the chain of inheritors. To make
an interface, declare a label:

  data MyIface = MyIface

and then declare it an instance of each iface class, starting with the superest
class and proceding down (all the while defining the methods).  Then pass your
label to process as the handler.

Processor
=========

Just a function that takes a handler label, protocols. It calls the
superclasses process if there is a superclass.

