Прежде всего вы захотите исправить эти предупреждения, а не просто игнорировать их. Все остальное - просто безобразная привычка!
print "Hello World!\n";
val _ = OS.Process.exit(OS.Process.success);
Кроме того, насколько я знаю: избавиться от автозагрузки сообщений в sml / nj невозможно. Вы можете попробовать другой переводчик. Поли / мл не говорит много, однако я не могу найти способ запустить его в файл. Mosml тоже мало общается, и здесь вы можете запустить его в файле (даже, как мне сказали, даже в файле .mlb - он недокументирован).
Другим способом было бы скомпилировать ваши файлы, однако тогда цель сценариев исчезает.
Вы наткнулись на один из случаев, когда sml не является подходящим инструментом для работы.
Обновление.
Я обнаружил, что на самом деле вы можете получить некоторые пути, отключив verbose в контроллере менеджера компиляции:
;#set CM.Control.verbose false;
От этого избавляется большинство, однако он все равно печатает некоторые сообщения автозагрузки, так как должен загружать структуру CM.Control. И это только закрывается потом. Однако в документации также предлагается установить переменную окружения CM_VERBOSE
CM_VERBOSE=false sml foo.sml
, что делает его почти тихим. Используя этот источник
val _ = print "Hello World!\n";
val _ = OS.Process.exit(OS.Process.success);
генерирует следующий вывод:
$ CM_VERBOSE=false sml foo.sml
Standard ML of New Jersey v110.72 built: Wed May 12 15:29:00 2010]
[opening foo.sml]
Hello World!
Обратите внимание на val _ = ...
, чтобы он не записывался val it = () : unit
каждый раз.