Запуск схемы из командной строки

Как вы запускаете программы Scheme с терминала в linux (ubuntu)? Также как принимать аргументы из командной строки в программе Scheme?

Изменить: Я использую реализацию DrScheme.

Ответ 1

Реализация схемы DrScheme и имя, которое вы используете для ее выполнения из командной строки, mzscheme. Документация для запуска командной строки script находится здесь: Unix Scripts (Документация по схеме PLT). Использование аргументов командной строки объясняется здесь: Разбор командной строки (Документация по схеме PLT).

В результате вы можете использовать скрипты shebang, например:

#! /usr/bin/env mzscheme
#lang scheme/base
(...scheme s-exps...)

или если вы хотите больше контролировать флаги командной строки для mzscheme, вам нужно запустить script следующим образом:

#! /bin/sh
#|
exec mzscheme -cu "$0" ${1+"[email protected]"}
|#
#lang scheme/base
(...scheme s-exps...)

Функция, которую вы используете для обработки аргументов командной строки, command-line. Вы найдете примеры того, как использовать его в статье, связанной со второй ссылкой.

Ответ 2

Он не стандартизирован в R6RS. Существует рекомендация SRFI-22, которую поддерживают некоторые интерпретаторы. Если ваш интерпретатор не поддерживает SRFI-22, это зависит от вашей реализации.

Ниже приведен пример из SRFI. Предполагается, что ваш интерпретатор представляет собой двоичную именованную схему-r5rs. В основном он вызывает функцию с именем main с одним аргументом arg, который представляет собой список аргументов командной строки.

#! /usr/bin/env scheme-r5rs

(define (main arguments)
  (for-each display-file (cdr arguments))
  0)

(define (display-file filename)
  (call-with-input-file filename
    (lambda (port)
      (let loop ()
    (let ((thing (read-char port)))
      (if (not (eof-object? thing))
          (begin
        (write-char thing)
        (loop))))))))

Ответ 3

Это решение работает для меня

#! /usr/bin/env guile
!#

(display "hello")
(newline)

Ответ 4

Также как принимать аргументы из командной строки в программе Scheme?

Библиотека R6RS определяет функцию, называемую command-line, которая возвращает список аргументов (первый из которых является именем программы). Однако не все реализации Scheme реализуют R6RS; ваша реализация может иметь некоторые другие функции для этого.

Как вы запускаете программы Scheme из терминал в linux (ubuntu)?

Это зависит от того, какую реализацию схемы вы используете.