Malcolm Ryan wrote: > I'm looking for a prolog data-structure which implements O(1) lookup > on keys, and which can take a prolog variable as a possible key. That > is, I want it to be functionally equivalent to: > > get(X, [(Key,Value) | _], Value) :- > X == Key, !. > > get(X, [_, Tail], Value) :- > get(X, Tail, Value). > > The use of '==' is important. Variables do not by default have an immutable property that could be used as an index or hash key (==/2 effectively compares the variable addresses, which cannot be used as a key because they can change due to garbage collection etc). You could generate a unique number for each interesting variable, store it in a variable attribute, and use that as a key for lib(hash). Or - if you only need a single lookup table - you could store the data in the attribute directly. -- JoachimReceived on Tue Mar 27 2007 - 13:13:59 CEST
This archive was generated by hypermail 2.3.0 : Wed Sep 25 2024 - 15:13:20 CEST