[m-dev.] Is this a bug?

Ralph Becket rafe at csse.unimelb.edu.au
Mon Jun 18 13:42:29 AEST 2007

I'm trying to use field update syntax to update a map of maps, but it
isn't working:

::: map_map_update_test.m :::

:- module map_map_update_test.
:- interface.
:- import_module io.

:- pred main(io::di, io::uo) is det.

:- implementation.
:- import_module map.

main(!IO) :-
    A0 = map.init,
    A  = A0 ^ elem(42) ^ elem(99) := 123,
    io.write_int(A ^ det_elem(42) ^ det_elem(99), !IO),

::: end of map_map_update_test.m :::

$ mmc --make map_map_update_test
Making Mercury/int3s/map_map_update_test.int3
Making Mercury/cs/map_map_update_test.c
map_map_update_test.m:005: In `main'(di, uo):
map_map_update_test.m:005:   error: determinism declaration not satisfied.
map_map_update_test.m:005:   Declared `det', inferred `semidet'.
map_map_update_test.m:012:   In unification with `elem(V_10, A0)':
map_map_update_test.m:012:   call to `map.elem'(in, in) = out can fail.
** Error making `Mercury/cs/map_map_update_test.c'.

mercury-developers mailing list
Post messages to:       mercury-developers at csse.unimelb.edu.au
Administrative Queries: owner-mercury-developers at csse.unimelb.edu.au
Subscriptions:          mercury-developers-request at csse.unimelb.edu.au

More information about the developers mailing list