[英]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.