Dear all,
I have cocked up the ambiguity symbol stuff ;-< . Sorry. I have coded
the ambiguous symbols to be a special case, when in reality the terminal
symbols are the special case. This has forced some coding gymnastics
throughout the core that will cause bugs in the future (esp in DP). I
have thrashed the issues through with the other three in my office, and
we all agree (unusually) that there is an obvious fix and that it will
be (almost) silent. It will be the very last change to symbols before
1.0, and hopefully will leave us never having to change any of that part
of the guts ever ever ever again.
The current hierachy looks like:
Symbol --> CrossProductSymbol
\
--> AmbiguitySymbol
The fix is to make the symbol interface hierachy look like:
Symbol --> CrossProductSymbol
\
--> AtomicSymbol
Symbol gains the getMatchingAlphabet() method, and AtomicSymbol is
contracted to always return an alphabet containing just itself. Things
like DNA bases would be AtomicSymbol instances.
This is all my fault :-{ I need shooting. Unless anybody gets back to me
or the list within the next day or so, I am going to just get on and
sort this out. I am fairly sure that this fix will not impact upon any
code in user-land, and if by some freak circumstance it does, the
compiler will tell you so.
Apologeticaly
Matthew
--
Joon: You're out of your tree
Sam: It wasn't my tree
(Benny & Joon)