Hi,
Here is a quick conclusion of the GSoC project that has made me port part of NARS to squeak.
What we achived is having first order inference with inheritance and similarity working (next step is to have property and instance). Once more stable, I'll leave a running application at the following adress:
http://nars.seasidehosting.stThe wiki will stay up but as this is a home server, it's not that reliable...
http://www.squeakside.com/seaside/ (wiki)
http://www.squeakside.com/seaside/NARS/MAIN (main app that will be on seasidehosting)
---My Plan are:
continue to port the system but problably not much until november (PhD' coming back ;) )
I think I'll try to refrain refactorings so that I can see all the interactions (all senders etc...) and therefore I need to port more.
I hope by next summer to have to "full" system implemented so that you can start using it :)
Once there, I think I'll be able to experiment deep refactorings
(dispatching to avoid as much as possible, switch cases and figure)
-- Random thoughts (before I forget :) )
I think Terms and friend should have more responsability to handle the figure. Statement might be able to return figure.
aStatement figureOutCommonTermPositionWith: anotherStatement returns 11, 12, 21, 22.
Instead of returning the integer, it could fire the inference rules accordingly
Sentence and subclasses should have responsabilities too to have a better dispatch in RuleTables I think
I
think we could gain some dispatch power by creating intermediar
classes, like for FOStatement and HOStatement (First order, higher
order).
I think it might be interesting to have memory implemented non static so that we can have simulteanously several memory objects.
All
inferences static classes could be in Memory to me (but this would
become huge). Then I think we could split memory in a memory
(containting bags and shortcuts to the processed element) and a
controller or reasoner that dispatchs and executes rules.
I would move fire into Memory.
I would give task more responsabilities (a bit like concept) as tasks are active knowledge.
I
created a Class Link (old TermLink) and subclassed with an empty
TermLink. I may go deeper as we talked but I might use composition too
to avoid to repeat some code. Anyway I'll ask your opinion on that when
I'll be doing it...
Some confusion:
I get confused with Tense and TemporalRelation.
I'm still also confused on when to give a reference to the real object or to its clone
That's all for now ;)
Cheers and thanks a lot Pei,
Cédrick