首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >建立多模块水星计划

建立多模块水星计划
EN

Stack Overflow用户
提问于 2014-11-09 02:04:31
回答 2查看 123关注 0票数 2

问:构建两个模块的汞程序的简单模板是什么?Module_1定义并导出一个简单的函数或谓词。Module_2导入函数/谓词来计算有用的结果并输出结果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-10 06:56:53

我将使用以下方法,首先使用要导出的函数或谓词(接口部分)定义模块:

代码语言:javascript
复制
% File: gcd.m

:- module gcd.

:- interface.
:- import_module integer.

:- func gcd(integer, integer) = integer.

:- implementation.

:- pragma memo(gcd/2).
gcd(A, B) = (if B = integer(0) then A else gcd(B, A mod B)).

在gcd模块(gcd/2)中使用导出函数的文件:

代码语言:javascript
复制
% File: test_gcd.m

:- module test_gcd.

:- interface.

:- import_module io.

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

:- implementation.

:- import_module char.
:- import_module gcd.
:- import_module integer.
:- import_module list.
:- import_module std_util.
:- import_module string.

main(!IO) :-
    command_line_arguments(Args, !IO),
    ArgToInteger = integer.det_from_string `compose` list.det_index0(Args),

    A = ArgToInteger(0),
    B = ArgToInteger(1),

    Fmt = (func(Integer) = s(integer.to_string(Integer))),
    GCD = gcd(A, B),
    io.format("gcd(%s, %s) = %s\n", list.map(Fmt, [A, B, GCD]), !IO).

要在Windows (cmd.exe)上编译和运行:请注意mmc也是一个Windows系统命令,因此请使用水星发行版安装程序提供的汞环境:

代码语言:javascript
复制
> mmc --use-grade-subdirs -m test_gcd
> test_gcd 12 4

要在Linux/MacOS/etc (任何类似Bash的shell)上编译和运行:

代码语言:javascript
复制
$ mmc --use-grade-subdirs -m test_gcd
$ ./test_gcd 12 4
票数 2
EN

Stack Overflow用户

发布于 2014-11-09 03:15:11

我阅读了“水星用户指南”并了解了以下内容:

$ "mmc -f module_1.m module_2.m“%没有引号

$ "mmake module_2.depend“

$ "mmake module_2“

它构建了一个可执行文件module_2,我执行了它。

$“./模块2”

而且运作正常。当其他一切都失败时,请阅读手册。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26825338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档