Как запустить (интерпретировать) программу Scheme, хранящуюся в файле?

На данный момент я использую REPL-функцию схемы Petite-Chez. Это хорошо работает для небольших примеров и т. Д.

Однако, как я могу сохранить всю программу в файле ".scm", а затем запустить (интерпретировать) ее из командной строки? Я знаком с командой (load "C:/.."), но это только загрузка определений из файла в REPL.

Как мне запускать программы, использующие Scheme, как программы на C/C++, где я компилирую, а затем выполняю двоичный файл ".exe"?

Благодарю.

2 ответа

Вкратце, вы просто пишете свою программу в файл, ставите #!/usr/bin/scheme --script в качестве первой строки программы, отметьте ее как исполняемый и запустите. Вот пример сценария, который эмулирует Unix echo команда:

#!/usr/bin/scheme --script
(let ([args (cdr (command-line))])
  (unless (null? args)
    (let-values ([(newline? args)
                  (if (equal? (car args) "-n")
                      (values #f (cdr args))
                      (values #t args))])
      (do ([args args (cdr args)] [sep "" " "])
          ((null? args))
        (printf "~a~a" sep (car args)))
      (when newline? (newline)))))

Подробности смотрите в разделе 2.6 " Использование схемы Chez".

Если вам нужен реальный исполняемый файл, есть несколько реализаций, которые поддерживают компиляцию в собственный исполняемый файл. Racket является одним из них, и он поддерживает множество различных версий и диалектов схем (R5RS, R6RS, Racket, ...). Есть много других. Курица (R5RS + SRFI), Гамбит (R5RS + SRFI) и Bigloo (R5RS, + SRFI) и другие.

Другие вопросы по тегам