Чтение аргументов командной строки в MIT-схеме

Я пытаюсь запустить программу схемы, используя схему MIT (схема MIT/GNU, работающая под GNU/Linux, выпуск 7.7.90.+ || Microcode 15.1 || Runtime 15.7), и я хотел бы получить доступ к аргументам командной строки.

Я просмотрел документацию, но ничего конкретного не нашел. Я пробовал командную строку, но получаю сообщение об ошибке:

;Unbound variable: command-line

Нужно ли загружать какую-то библиотеку, чтобы использовать командную строку, или для этого есть какая-то другая функция?


person Giorgio    schedule 23.07.2012    source источник


Ответы (1)


Мне удалось найти следующее решение.

Я создал файл init.scm со следующими определениями:

(define command-line-args '())

(define parse-argument-list
  (lambda (arg-list)
    (set! command-line-args
      (if (null? arg-list)
          (list)
          (cdr arg-list)))))

(set-command-line-parser! "args" parse-argument-list)

Таким образом, при обнаружении параметра командной строки --args вызывается функция parse-argument-list.

Я загрузил этот файл в интерпретатор mit-scheme и сохранил изображение мира (init.com) с помощью процедуры disk.save.

Затем я написал сценарий оболочки (bash), который вызывает мой основной сценарий схемы следующим образом:

mit-scheme --band "init.com" --interactive --batch-mode --args $* < myscript.scm

Наконец, в моем основном скрипте я могу получить доступ к аргументам командной строки через переменную

command-line-args

Я не уверен, что это стандартный/правильный способ сделать это, но, по крайней мере, он работает.

person Giorgio    schedule 15.08.2012
comment
Я проверил с разработчиками схемы MIT, что это решение в порядке. - person Giorgio; 27.08.2012