racket - 如何通过给出命令行参数从终端调用 Racket 程序

标签 racket

我有一个名为 foo.rkt 的 Racket 文件 在该文件内我有一个名为 textify 的过程,它需要 2 个参数。现在我如何从终端调用这个过程?我想做的很简单:

> racket foo.rkt myfirstarg mysecondarg   

然后我希望此调用激活 (textify myfirstarg mysecondarg) 过程。这可能吗 ?

这是 foo.rkt 的内容:

#lang racket
(require wxme) 
(provide 
 (contract-out 
  [textify (-> path-string? path-string? void?)])) 
(define (textify in out) 
  (call-with-input-file in 
    (λ (in-port) 
      (call-with-output-file out 
        (λ (out-port) 
          (copy-port (wxme-port->text-port in-port) out-port)) 
        #:exists 'truncate)))) 

最佳答案

您只需将其作为文件中的最后一个表达式即可:

(apply textify (vector->list (current-command-line-arguments)))

如果您正在制作一个带有开关的更高级程序,您可以使用 command-line这会为你做到这一点。

关于racket - 如何通过给出命令行参数从终端调用 Racket 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47031785/

相关文章:

functional-programming - 在 Scheme 中定义一个宏来创建花哨的子列表

方案 - 字符串追加两个字符串列表

scheme - 将文件转换为方案中的列表或字符串

functional-programming - 方案( Racket )正确编写的功能不适用于某些输入

scheme - 在 Racket 中使用 peano 数进行划分

garbage-collection - Racket 中的尾调用优化

scheme - 计算 Racket BSL 中给定数字的适当除数之和

scheme - 寻找更清晰的方法来从数字列表中创建关联列表

struct - 如何在 Racket 中为编译时提供结构元数据的同时覆盖结构构造函数?

scheme - 方案: define-syntax-rule pattern matching syntax