:- module fs.

:- interface.

:- import_module io.

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

:- implementation.

main(!IO) :-
    p(1),
    get_m(M, !IO),
    io.write(M, !IO),
    nl(!IO),
    q(2),
    nl(!IO).

:- mutable(m, int, 0, ground, [untrailed, attach_to_io_state]).

:- pred p(int::in) is det.

p(I) :-
    promise_pure(
        impure set_m(I)
    ).

:- pred q(int::in) is det.

q(I) :-
    trace [io(!IO)] (
        io.write(I, !IO)
    ).
