[mercury-users] data base interface
Fergus Henderson
fjh at cs.mu.oz.au
Tue Sep 30 00:26:11 AEST 1997
Tomas By, you wrote:
>
> I'm contemplating a Mercury interface to our GATE system, which for
> these purposes can be seen as a custom (text processing oriented)
> data base.
>
> To allow for destructive update of the DB I suppose a 'state' type
> is needed, like this:
>
> :- pred add_item(key,value,db_state,db_state).
> :- mode add_item(in,in,di,uo).
>
> but access only involves one state:
>
> :- pred get_item(db_state,key,value).
> :- mode get_item(ui,in,out).
>
> and 'open' would look something like this:
>
> :- pred db_open(string,db_state).
> :- mode db_open(in,uo).
>
> Does this make sense?
Yes, that makes perfect sense.
> Any problems I should know about before taking this further?
`ui' modes are not yet supported, I'm afraid.
(Andrew Bromage has been working a change which
will fix that, but he has not yet finished.)
So for the moment you'll have to use a pair of `di, uo' mode arguments
for `get_item', i.e.
:- pred get_item(key,value,db_state,db_state).
:- mode get_item(in,out,di,uo).
Another issue is that if you want support for transactions and/or exception
handling, then things get a bit more complicated.
> Btw, are there any plans to add a data base to the language as in Prolog?
Not as such. But there are a couple of things in the works.
The general idea is to provide lower-level building blocks which
can be used to implemented data bases and other things as well.
For example, the next release will have a new version of the `store'
module using unique modes, with an efficient implementation.
Also I have a hash table module around somewhere which may go into the
standard library eventually.
Another low-level building block is the C interface, which can be used
to interface to external databases. The people at Mission Critical used
that to implement an ODBC interface; we've been working on cleaning up
the interface and including it in our distribution. We had hoped to
include that in 0.7, but it didn't quite make it. Maybe for 0.8.
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh> | of excellence is a lethal habit"
PGP: finger fjh at 128.250.37.3 | -- the last words of T. S. Garp.
More information about the users
mailing list