Под управлением Схема из командной строки

Для C++ действительно нет большой части различия между структурами и классами. Основное функциональное различие - то, что члены структуры общедоступны по умолчанию, в то время как они являются частными по умолчанию в классах. Иначе, насколько язык затронут, они эквивалентны.

Однако я склонен использовать структуры в C++ как, я делаю в C#, подобном тому, что сказал Brian. Структуры являются простыми контейнерами данных, в то время как классы используются для объектов, которые должны действовать на данные в дополнение к тому, чтобы просто держаться за него.

13
задан Pranav 24 July 2009 в 08:08
поделиться

4 ответа

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

В результате вы можете использовать сценарии shebang следующим образом:

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

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

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

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

9
ответ дан 2 December 2019 в 00:19
поделиться

Также, как принимать аргументы от командная строка в программе на схеме?

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

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

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

1
ответ дан 2 December 2019 в 00:19
поделиться

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

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

#! /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
ответ дан 2 December 2019 в 00:19
поделиться

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

#! /usr/bin/env guile
!#

(display "hello")
(newline)
2
ответ дан 2 December 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: