[mercury-users] Hash_table initialization

Goncalo Jorge Coelho e Silva l10454 at alunos.uevora.pt
Wed Apr 30 10:31:00 AEST 2003


 I tried to used hash_tables and
had a few problems regarding initialization.

 I am unsure whether I have to use predicates,
where I explicitly define the default size and
occupancy arguments, like in:

:- func new(hash_pred(K), int, float) = hash_table(K, V).

 I tried this code (which didn't compile ;) ):

:- import_module io.

:- pred main(io__state, io__state).
:- mode main(di, uo) is det.
%:- mode main(di, uo) is semidet.
%:- mode main(di, uo) is cc_multi.

:- pred seee(string, io__state, io__state).
:- mode seee(in, di, uo)is semidet.

:- implementation.
:- import_module string.
:- import_module hash_table.

%main -->
        det_insert(hash_table(K, V), K, V) = MyHashTable(K, V),
        %set(hash_table(key, value), key, value) = HT,
        %set(HT, key, value) = hash_table(key, value),
        %set(hash_table(key, value), key, value) = hash_table(key, value),
        io__write_string("It's harder to see it.", IO0, IO).

Compilation result is: 

inter.m:019: In clause for predicate `inter:main/2':
inter.m:019:   warning: variable `MyHashTable' occurs only once in this
inter.m:019: In clause for predicate `inter:main/2':
inter.m:019:   in argument 1 of functor `det_insert/3':
inter.m:019:   error: undefined symbol `hashtable/2'.
inter.m:010: Error: no clauses for predicate `inter:seee/3'.
make: *** [run] Error 1

Do I need to use 'new(hash_pred(K),...)' ?

And how should I use it?

Thanks again.


mercury-users mailing list
post:  mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-users-request at cs.mu.oz.au Message: subscribe

More information about the users mailing list