So far, I have:

- written a parser for my logic definition language;
- solved the problem I was having with polymorphism;
- designed, in the large, my data structures; and
- thought about name for the project.

We’ve now entered the mid-year holiday between the two semesters and I am hoping to get a large amount of my implementation done during the break. On my list of things to do are:

define a state monad (to model the saturation of a branch);

define a backtracking monad (to model the branching of non-deterministic choices);

find a way to compose them (perhaps by deriving a monad transformer);

finalise the structure of the logic modules;

write a realistic (perhaps even production) parser and code generator for the logics;

learn to use hs-plugins to write dynamically loadable modules (and find a way to make logic modules dynamically loadable); and

implement some representative test logics (propositional calculus, K, intuitionistic logic, something with transitive frames, etc).

I’ve got a lot of work ahead of me, but the next few weeks are going to be fun. At the end of it, I will (I hope) have a running system to extend and improve and a much greater knowledge of Haskell.