Added isProbMeas, as well as monadic debugging versions of
both it and isSigma.
Added an example probability space representing a fair die.

2011-03-29 7

Custom intersection functions added and briefly tested.

2011-04-02 8

Custom union functions added and briefly tested.
Solution is crude: it is O(N^2), and requires 2 passes over
the sample list every time a join is successful. Perhaps, a
pre-sort?

2011-06-06 9

Attempted fix of getCompEvent
Added smplComp function, as helper to revised getCompEvent.
Changed Point to accept Double.
Moved all sample spaces to new file, Main.hs.
Added input sorting to range.
Changed Ranges to be open intervals, in order to allow for
complementing out a Point from them.

Documentation

an 'abstract space' composed of either discrete or continuous (or a mix) samples

an 'event space', which must be a Sigma field defined over the abstract space

a 'probability measure' defined over the event space

Note:

For the sake of efficient coding, the event space and the
probability measure are combined in the Haskell data structure,
below. This is permissable, because there has to be a 1:1
correspondance between them anyway. And it is preferable, because it:

This is our abstract data type, which represents a sample in the abstract space.

It has a constructor representing every possible element in the abstract space
we're modeling. (Currently, just points and ranges of Doubles.)

Normally, none of the constructors of this type will be called directly.
Instead, helper functions are provided, such as point and range, which
hide the implementation details from the user, and present a stable interface.

Currently, the sole exception to the above is the Empty constructor, which is
really just a hack intended to put off the job of making the functions in this
library more intelligent, with regard to their handling of empty lists.