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.