繁体   English   中英

从命令行运行Scheme

[英]Running Scheme from the command line

你如何从linux(ubuntu)的终端运行Scheme程序? 另外如何在Scheme程序中接受来自命令行的参数?

编辑:我正在使用DrScheme实现。

DrScheme方案实现以及用于从命令行执行它的名称是mzscheme 可在此处找到启动命令行脚本的文档: Unix Scripts(PLT Scheme文档) 这里解释了命令行参数的使用: 命令行解析(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...)

用于处理命令行参数的函数是command-line 您将在第二个链接链接到的文章中找到如何使用它的示例。

它在R6RS中没有标准化。 SRFI-22有一个建议,一些口译员支持。 如果您的口译员不支持SRFI-22,那么这取决于您的实施。

以下是SRFI的示例。 它假设您的解释器是名为scheme-r5rs的二进制文件。 基本上,它使用单个arg调用名为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))))))))

这个解决方案适合我

#! /usr/bin/env guile
!#

(display "hello")
(newline)

另外如何在Scheme程序中接受来自命令行的参数?

R6RS库定义了一个名为command-line的函数,它返回参数列表(第一个是程序的名称)。 并非所有Scheme的实现都实现了R6RS; 您的实现可能还有其他功能。

你如何从linux(ubuntu)的终端运行Scheme程序?

这取决于您正在使用的Scheme的实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM