SML - NJ, как скомпилировать автономный исполняемый файл

Я начинаю изучать стандартный ML, и теперь я пытаюсь использовать стандартный ML компилятора Нью-Джерси.

теперь я могу использовать интерактивный цикл, но как я могу скомпилировать исходный файл в автономный исполняемый файл?

В C, например, можно просто написать

$ gcc hello_world.c -o helloworld

а затем запустите двоичный файл helloworld.

Я читал документацию для SML NJ Compilation Manager, но у него нет четких примеров.

кроме того, есть ли другой компилятор SML (которые позволяют автономное двоичное создание) доступно?

1 ответов


и MosML и MLton также имеют возможность создавать автономные двоичные файлы. MosML через команду mosmlc и MLton через команду mlton.

обратите внимание, что MLton не имеет интерактивного цикла, но является компилятором оптимизации всей программы. Что в основном означает, что для компиляции требуется довольно много времени, но в свою очередь он генерирует невероятно быстро программы SML.

для SML / NJ вы можете использовать CM.mk_standalone функция, но это не рекомендуется в руководстве пользователя CM страница 45. Вместо этого они рекомендуют использовать команду ml-build. Это создаст образ кучи SML/NJ. Образ кучи должен быть запущен с параметром @SMLload, или вы можете использовать heap2exec программа, при условии, что у вас есть поддерживаемая система. Если вы этого не сделаете, я бы предложил вам использовать MLton вместо этого.

для создания допустимой кучи SML/NJ можно использовать следующее изображение:

тест.см:

Group is 
        test.sml

        $/basis.cm