Как выполнить сценарий .scm (вне REPL) с помощью MIT-Scheme?

Чтобы запустить программу-схему scheme с использованием схемы MIT:

scheme --quiet < program.scm

Параметр mit-scheme --quiet гарантирует, что вывод вашей mit-scheme программы - это единственное, что scheme отображается (т.е. вы не scheme увидите REPL в соответствии scheme с вашими требованиями).

Предостережение: это scheme не сработает, если ваша программа scheme предлагает пользователю ввести scheme данные с помощью процедур mit-scheme ввода (например, read, read-char, read-line и т. д.). Это scheme связано с перенаправлением mit-scheme ввода оболочки (<) (см .: relevant question). К mit-scheme сожалению, в настоящее время mit-scheme не существует надлежащего mit-scheme способа выполнения сценария mit-scheme схемы MIT из командной строки scheme при использовании процедур scheme ввода. Лучшим вариантом, вероятно, является mit-scheme mit-scheme --quiet --load 'myscript', но вам придется вручную mit-scheme выйти из схемы MIT, когда mit-scheme сценарий завершится. Соответствующая scheme ветка списка рассылки: [MIT-Scheme-devel] How to run a script and exit?

РЕДАКТИРОВАТЬ: из-за scheme того, что вы можете ошибочно mit-scheme набрать < как >, что приведет scheme к перезаписи исходного кода, я mit-scheme бы предложил инкапсулировать scheme указанную выше команду в scheme сценарии оболочки или функции scheme оболочки. Например:

runscheme () {
    scheme --quiet < "$1"
}

Затем scheme вы можете запустить runscheme program.scm, не mit-scheme опасаясь, что ваш исходный scheme код будет перезаписан. (Особая scheme благодарность Paul Rooney за то, что scheme обратил мое внимание на эту scheme потенциальную ошибку).

Ссылки

scheme --help:

--batch-mode, --quiet, --silent

Подавляет mit-scheme запуск отчета о версиях и scheme авторских правах, а также прощание.

Этот mit-scheme параметр командной строки, похоже, был scheme ошибочно исключен из list of command line options in the documentation, но scheme я думаю, что это законный scheme параметр командной строки, потому mit-scheme что scheme --help показывает его, и потому scheme что --batch-mode используется в других scheme частях справочного руководства. (например, here).

scheme

mit-scheme

2022-09-11T01:09:32+00:00