I have my symtab program ready for you guys to look at. I havn't got it onto 
github yet because my Linux system isn't working, so I just uploaded it to 
my website where you can grab it: http://www.rosycrew.com/symtab.factor

This is a symbol table that uses an algorithm of my own invention. I 
originally wrote this in IBM370 assembly language about 10-13 years ago. 
There was no damping then. Later, I upgraded to ANS-Forth and added a small 
damping (value of 5) to reduce "churning" (described in the comments). Now I 
have upgraded to Factor. I added the ability to smudge (hide) words. I also 
have a prune function that deletes smudged nodes at the leaves. Having done 
this, I realized that I needed some way to optimize the tree, which would 
push all of the smudged nodes down to the leaves. I wrote the optimize 
function in the last few days to do this. Now that I have an optimize 
function, I have also raised my damping level to 30. The idea is that the 
user can have this high damping level during normal usage, but can also 
periodically run optimize (at the end of every work session would be a good 
time). Alternatively, you can set the damping level at 0, in which case you 
don't need to run optimize at all; the tree is continually maintained in an 
optimized state (except for the smudged nodes that take some time to work 
their way down to the leaves).

The previous paragraph will make a lot more sense after you have studied the 
source file. It is pretty short, with only a handful of functions, so you 
should be able to figure it out quickly. It is not too complicated, and it 
is heavily documented; if you do have trouble though, let me know and I will 
answer your questions. I am likely not using very idiomatic Factor, as this 
is my first effort at Factor programming. I'm still mentally translating 
everything from ANS-Forth. I definitely want to hear your criticisms in this 
regard to help me learn more idiomatic Factor. I am also interested in any 
criticism you may have of my algorithm. I don't know of anybody who has ever 
done a symbol table in this manner before; I think my algorithm is original.

The program is recursive and would benefit a lot from being rewritten in 
assembly language. The functions that insert nodes and find nodes are both 
short, and would be the most likely candidates for assembly language. If 
there is any interest, I will do this. I read somewhere that Factor has a 
Pentium assembler available, but I haven't examined it yet. That is my next 
project.

Is it true that Factor internally uses a hash table resolved with linked 
lists? In my comments in the source file I compare my algorithm to hash 
tables and explain why I think that my algorithm is better.


------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image 
processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________
Factor-talk mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/factor-talk

Reply via email to