The target for the "dao" executable did not list the "src/dao-main.hs" source file as a dependency, so executing "make" after modifications to that file was not triggering a remake. This has been fixed.
    I have changed the fundamental architecture of the string execution algorithm just a bit. Before, performing a recursive string execution would have the string to be executed placed in a buffer, and after the present string execution was completed, the next item in the buffer would be evaluated.  Furthermore, the original design had every action that was selected by string execution evaluated in it's own thread in parallel.
    However designing the algorithm in this way this very naive, an idea I had held over from the original version of this program that I had published during graduate school. Part of the reason for doing this was to try to avoid executing the same string many times in a row. I intended to evaluate multiple actions in parallel because I thought it would be reduce the chances that a string execution would time-out if a rule-action that required a long time to compute would not prevent other logic rules from firing, and with luck at least one logically correct rule would fire even if another got stuck.
    The new design I have implemented this evening does away with string buffering and parallel evaluation altogether. A recursive string execution is simply executed by function call at any time during execution of any part of the program, function, logic rule, or otherwise. All rules evaluated within a single module will evaluate in the order in which they were matched to the string query. If this should result in the computation being halted by time-out, so be it. Each module still evaluates in parallel however. So now it is up to the programmer to decide when to launch potentially expensive computations in parallel threads.
    Aside from the parallel computation of modules, parallel computation will be made possible by foreign interfaces to Haskell language data types and functions will be made available so potentially expensive computations can be launched in a separate thread. However this feature has not been implemented yet.