I would like to play around with some classes which require unification (I know about Prolog/V etc...). I am not sure where to "put" the unification algorithm.
It might look like:
anObject unifiesWith: anotherObject in: anEnvironment
? does that seem like the right sort of selector?
So, to I put that in Number, Strings, Array, (and a class I've made - LogicVar)?
Is it "OK" to extend the functionality of the built-in classes this way, or should I derive my own Number, String, Array --- I want to use the parser/compiler that Squeak already has, so I want to be able to enter:
5 unifiesWith: 5 in: emptyEnv
On the subject of return values, what's the best way to return more than one value? Should I create my own class (UnificationReturnValue) (then I could tell it how to respond to ifTrue/ifFalse etc), or should I return a collection with indexes for the success-value and the environment-value?
Thanks!
Cheers
Chris