我有一个模块导出nat/1
以测试/生成自然数:
:- module nat.
:- interface.
:- import_module int.
:- pred nat(int).
:- mode nat(in) is det.
:- mode nat(out) is multi.
:- implementation.
:- pragma promise_pure(nat/1).
nat(_::in).
nat(0::out).
nat(X::out) :- nat(Y), X = Y + 1.
和同一目录中的主模块进行尝试:
:- module main.
:- interface.
:- import_module io.
:- pred main(io__state::di, io__state::uo) is cc_multi.
:- implementation.
:- import_module nat.
main(!IO) :- nat(X), print(X, !IO).
我运行mmc --make-int nat.m
它成功生成了接口文件,但是当我运行时mmc main.m
出现以下错误:
/usr/bin/ld: main.o: in function `<predicate 'main'/2 mode 0>':
main.c:(.text+0x45): undefined reference to `<predicate 'nat.nat'/1 mode 1>'
collect2: error: ld returned 1 exit status
我正在使用 MMC version 20.06.1, on x86_64-pc-linux-gnu
。
我错过了一些明显的东西吗?代码改进也非常受欢迎。