无法弄清楚如何运行 .scm(使用 guile 或 scm)文件

Tar*_*nti 5 scheme interpreter compilation guile mit-scheme

我创建了一个abc.scm文件,并尝试在 Ubuntu 的终端中使用“ guild compile ”、“ scm ”和“ guile ”命令将其编译为二进制文件(或任何编译为的 guile 方案)。

对于“ guild compile abc.scm ”,我得到的输出“写为‘/home/tarunmaganti/.cache/guile/ccache/2.0-LE-8-2.0/home/tarunmaganti/abc.scm.go’ ”我找到了文件并像这样运行 - “ ./abc.scm.go ”表示权限被拒绝。
当我使用“ chmod 755 ”或“ chmod 777 ”授予必要的权限时,出现类似 - “ bash: ./abc.scm.go: cannot execute binary file: Exec format error ”的错误

scm what-file-name.scm ”只是打开scm解释器。

" guile 任何文件名.scm什么都不做。

官方 GNU/Guile Scheme 的链接不是很有帮助。

请帮我。我想创建一个 guile 方案脚本文件。编译它并将其作为 C/C++ 程序运行。是否可以?如果无法编译,我想知道,如何至少运行GNU/guile 方案MIT-Scheme的脚本文件。

{非常感谢逐步介绍,我仍然是使用 Ubuntu 和 Scheme 的初学者。}

提前致谢。

Chr*_*ung 5

您可以使用 shebang 表示法创建 Guile 脚本(-s在较新版本的 Guile 中是可选的):

#!/usr/bin/guile -s
!#
(display "Hello, world!\n")
Run Code Online (Sandbox Code Playgroud)

注意!#第二行的 。Guile 将 视为#!块注释的开始(类似于#|标准方案中的内容),必须使用!#(类似于|#标准方案中的内容)来终止它。

如果您希望脚本将任何命令行选项传递给 Guile 本身,请阅读元开关。这是一个这样的例子:

#!/usr/bin/guile \
-e main -s
!#
(define (main args)
  (if (null? (cdr args))
      (format #t "Hello, world!~%")
      (for-each (lambda (name)
                  (format #t "Hello, ~a!~%" name))
                (cdr args))))
Run Code Online (Sandbox Code Playgroud)