Как мне выполнить скрипт .scm (вне REPL) с помощью MIT-Scheme? - PullRequest
36 голосов
/ 24 мая 2009

Я хочу напечатать что-то вроде 'schema file.scm' и заставить его интерпретировать файл, а затем перенести меня обратно в мою оболочку вместо загрузки его в REPL.

edit: я пробовал схему

Ответы [ 4 ]

32 голосов
/ 24 мая 2009

scheme <file.scm должно работать (если вы не укажете --interactive и stdin не является терминалом, схема работает не в интерактивном режиме).

11 голосов
/ 09 декабря 2017

Для запуска программы программы с использованием MIT Scheme:

scheme --quiet < program.scm

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

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

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

Тогда вы можете запустить runscheme program.scm, не опасаясь, что ваш исходный код будет перезаписан. (Особая благодарность Полу Руни за доведение этой потенциальной ошибки до моего сведения).

Ссылки

scheme --help:

- пакетный режим, --quiet, --silent

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

Этот параметр командной строки, по-видимому, был ошибочно пропущен из списка параметров командной строки в документации , но я думаю, что это допустимый параметр командной строки, поскольку scheme --help показывает его, а также из-за --batch-mode используется в других частях справочного руководства (например, здесь ).

6 голосов
/ 13 апреля 2011

Я думаю, что вы хотите SCM. Вы можете выполнить скрипт .scm следующим образом:

$ scm -f foo.scm arg1 arg2 arg3

Подробнее см. http://people.csail.mit.edu/jaffer/scm_3.html#SEC28.

Домашняя страница СКМ: http://people.csail.mit.edu/jaffer/SCM

0 голосов
/ 21 декабря 2017

проверил chez --help, а потом я нашел это (скажем, я использую схему Chez):

chez --script ./temp.scm

Также, --verbose очень полезно:

chez --verbose --script ./temp.scm
...