В. Какой простой шаблон для создания двухмодульной программы для ртути? Module_1 определяет и экспортирует простую функцию или предикат. Module_2 импортирует функцию/предикат для вычисления полезного результата и выводит результат.Создание многомодульных программ по ртути
ответ
Я хотел бы использовать следующий подход, сначала необходимо определить модуль с функции (ий) или предиката (ов) или предикаты вы хотите экспортировать (интерфейс раздела):
% 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)).
Файл с помощью экспортируемого функция в модуле НОД (НОД/2):
% 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): Пожалуйста, обратите внимание, что ММС также командной системы Windows, так используйте среду ртути, при условии от инсталлятор Распределение ртути:
> mmc --use-grade-subdirs -m test_gcd
> test_gcd 12 4
Для компиляции и запуска на Linux/MacOS/и т.д. (любой Баш-как оболочка):
$ mmc --use-grade-subdirs -m test_gcd
$ ./test_gcd 12 4
Я прочитал в руководстве пользователя Mercury и узнал следующее:
$ "ММС -f module_1.m module_2.m" % без кавычек
$ "mmake module_2.depend"
$ "mmake module_2"
Он построил исполняемый module_2, который я выполнил
$»./module_2"
и он работал правильно. Когда все остальное не удается, прочитайте руководство.
Я сказать, что руководство пользователя немного устарела в этом подходе, по моему опыту в качестве новичка Mercury, легче использовать автоматическое обнаружение зависимостей компилятора 'mmc', используя флаг' --make', как я показал в своем ответе. – Sebastian
Себастьян прав. mmake не рекомендуется, и когда мы вводим новые функции, мы не сообщаем их в mmake. mmc -f не устарел, но полезен, когда ваши имена файлов не соответствуют вашим именам модулей или когда модули размещаются в каталогах, отличных от текущего каталога. Спасибо. –
- 1. создание программ python «чат» по трубе
- 2. Создание программ Moodle программно
- 3. развертывание многомодульных артефактов maven
- 4. Версии многомодульных приложений
- 5. Создание новых программ NSDictionaries
- 6. Создание программ BPEL программно?
- 7. Создание программ NSObjects ios
- 8. Локальное хранилище ртути
- 9. Исключение программ из помощника по совместимости программ
- 10. Rails Проверка подлинности ртути
- 11. проблема с перенапряжением ртути
- 12. Создание программ на нескольких платформах?
- 13. Настройка программ по умолчанию
- 14. Spring-roo propper на основе многомодульных слоев
- 15. Создание программ, которые взаимодействуют с группами Yahoo
- 16. Отключить автоматическое выполнение отката ртути
- 17. Уменьшить размер папки ртути .hg
- 18. Необходим пример синтаксиса записи ртути
- 19. Обратитесь к обзору по ртути относительно именованной версии
- 20. Создание программ с обратной обработкой Java
- 21. Синхронизация программ по разным машинам
- 22. Linux: Изменение программ по умолчанию
- 23. Создание программы, которая управляет меню других программ
- 24. Создание make-файла для программ CUDA
- 25. Создание пакетного файла для блокировки определенных программ
- 26. Создание инсталляторов для сложных кросс-платформенных программ
- 27. Создание графических программ с использованием VC++ 2012
- 28. Преобразование списка в список кортежей в ртути
- 29. Преобразование репозитория svn PuTTY в хранилище ртути
- 30. Intellij не отображает локальный вид хранилища ртути
Вы должны иметь возможность использовать команду «mmc» для окон. (Мы поощряем это). –
Спасибо @PaulBone, я переформулировал ответ. – Sebastian