[m-users.] [Beginner] Using a functions from 'libs'

Razetime rraghu.11502 at gmail.com
Sun Oct 16 22:01:07 AEDT 2022


My bad. What is the problem here? Is it a problem with
https://github.com/Mercury-Language/mercury/blob/master/compiler/md5.m
?

Making Mercury/int3s/a05.int3
Making Mercury/ints/a05.int
Making Mercury/cs/a05.c
Making Mercury/cs/md5.c
Making Mercury/os/a05.o
Making Mercury/os/md5.o
Making a05
Making md5
** Error making `md5'.
Mercury/os/md5_init.o:md5_init.c:function mercury_init: error:
undefined reference to '<predicate 'main'/2 mode 0>'
collect2: error: ld returned 1 exit status

On 10/16/22, Volker Wysk <post at volker-wysk.de> wrote:
> You've mixed up the input and output arguments in the declaration of
> main/2.
>
> Volker
>
>
> Am Sonntag, dem 16.10.2022 um 16:06 +0530 schrieb Razetime:
>> For this program I tried using mmc --make and i got the following error.
>>
>> :- module a05.
>>
>> :- interface.
>> :- import_module io.
>> :- pred main(io::uo,io::di) is det.
>>
>> :- implementation.
>> :- import_module list.
>> :- import_module md5.
>>
>> main(!IO):-
>>   S0=md5sum("abc3231929"),
>>   print_line(S0,!IO)
>>   .
>>
>>
>> $ mmc --make a05 md5
>> Making Mercury/int3s/a05.int3
>> Making Mercury/ints/a05.int
>> Making Mercury/cs/a05.c
>> a05.m:013: In clause for `main(uo, di)':
>> a05.m:013:   in argument 2 of call to predicate `io.print_line'/3:
>> a05.m:013:   unique-mode error: the called procedure would clobber its
>> a05.m:013:   argument, but variable `STATE_VARIABLE_IO_0' is still live.
>> ** Error making `Mercury/cs/a05.c'.
>>
>> How do i make sure the variable is not live?
>>
>> On 10/16/22, Razetime <rraghu.11502 at gmail.com> wrote:
>> > Oh, makes sense. The md5.m file is not part of the distribution so i
>> > have to compile it along with my program. Thanks.
>> >
>> > On 10/16/22, Julien Fischer <jfischer at opturion.com> wrote:
>> > >
>> > >
>> > > On Sun, 16 Oct 2022, Razetime wrote:
>> > >
>> > > > using the name md5 like follows:
>> > > > :- module a05.
>> > > >
>> > > > :- interface.
>> > > > :- import_module io.
>> > > > :- pred main(io::uo,io::di) is det.
>> > > >
>> > > > :- implementation.
>> > > > :- import_module list.
>> > > > :- import_module md5.
>> > > >
>> > > > main(!IO):-
>> > > >  S0=md5sum("abc3231929"),
>> > > >  print_line(S0,!IO)
>> > > >  .
>> > > >
>> > > > gives me this error:
>> > > > $ mmcb a05.m
>> > > > ~
>> > > >                                                 │mercury_compile:
>> > > > cannot find `Mercury/ints/md5.int' in directories .,
>> > > > ~
>> > > >                                                 │
>> > > > /usr/lib/mercury/ints
>> > >
>> > > Using mmc directly like that is only for building single module
>> > > programs.  To build a program consisting of multiple modules, use
>> > > the --make option, e.g.
>> > >
>> > >      $ mmc --make a05
>> > >
>> > > (See the "Using the Mercury compile" section of the Mercury users's
>> > > guide for details.)
>> > >
>> > > Julien.
>> >
>> _______________________________________________
>> users mailing list
>> users at lists.mercurylang.org
>> https://lists.mercurylang.org/listinfo/users
>
>


More information about the users mailing list