Technical Issues

The last few days have plagued me with a series of technical problems. 

I have wasted a lot of time trying to cope with the limitations of the Sappho language. I designed the language to be easy for less technically-inclined people to use, but its limitations cause endless headaches and delays. Why should I suffer to support the possibility that some people might someday use the language? Why don’t I just turn Sappho into a full-featured language? Sappho is a stack-oriented language, exactly like Forth. So why not add some of Forth capabilities to Sappho?

Super-Sappho
One of the most useful features would be the ability to create independent persistent variables. However, these would end up being global in scope — always a bad thing. It would also be nice to set up local variables, although this is already partially addressed with the RoleValues and the VerbValues — which are little used. 

So far I have been able to deal with most problems by creating custom Siboot operators (see below)

Factories
Another possibility is to learn Java well enough to understand and modify the existing SWAT code. To do this, I have been studying design patterns, especially Factories. I still don’t fully understand the concept but I understand enough to see how to make the change. However, I will not risk the integrity of the code on my perfunctory grasp of Factories, so I’ll have to do more studying before tackling this possibility.

Custom Siboot Operators
I have been adding a number of custom operators to the library, as needed. The most powerful of these are two operators that combine two uncertain numbers. This is necessary to bring uncertainty into the mix. For now, I am leaving uncertainty out, but eventually I will use these functions to combine existing P3 values with statements of P3. Thus, if Actor A tells Actor B that Actor C trusts Actor B to the extent Quantifier, then Actor B must adjust his own P3 value towards the value of Quantifier — but he should mix them with proper consideration of the uncertainties. If he is highly certain of his existing value, he should not be willing to change it by much, regardless of what Actor A tells him. If he is uncertain, then he should give Actor A’s information greater weight. 

I already have this operator written up; the math is done. But I have so far refrained from implementing it in the scripts; I want to keep the system simple for now.

Conclusion
I suppose that, for now, I’ll stick with the reliance on creating custom Siboot operators to deal with these problems.