Shell Guile方案脚本教程加载脚本

Shell Guile方案脚本教程加载脚本,shell,scripting,scheme,guile,Shell,Scripting,Scheme,Guile,我正在努力学习一点诡计方案,我正在看 目前我有以下代码: 模块.scm: fact.scm 我使用chmodules+x modules.scm使主脚本可执行,然后尝试运行脚本:/modules.scm 10 3(应为120),但出现错误: Backtrace: 4 (apply-smob/1 #<catch-closure 119cb80>) In ice-9/boot-9.scm: 705:2 3 (call-with-prompt ("promp

我正在努力学习一点诡计方案,我正在看

目前我有以下代码:

模块.scm: fact.scm 我使用
chmodules+x modules.scm
使主脚本可执行,然后尝试运行脚本:
/modules.scm 10 3
(应为120),但出现错误:

Backtrace:
           4 (apply-smob/1 #<catch-closure 119cb80>)
In ice-9/boot-9.scm:
    705:2  3 (call-with-prompt ("prompt") #<procedure 11aa8e0 at ice-9/eval.scm:330:13 ()> #<procedure default-prom…>)
In ice-9/eval.scm:
    619:8  2 (_ #(#(#<directory (guile-user) 1233140>)))
In /home/xiaolong/development/Guile/scripting/./modules.scm:
    26:13  1 (main _)
     18:0  0 (n-choose-k _ _)

/home/xiaolong/development/Guile/scripting/./modules.scm:18:0: In procedure n-choose-k:
In procedure module-lookup: Unbound variable: fact
回溯:
4(应用smob/1#)
在ice-9/boot-9.scm中:
705:23(带提示(“提示”)的呼叫)
在ice-9/eval.scm中:
619:8  2 (_ #(#(#)))
在/home/xiaolong/development/Guile/scripting//modules.scm中:
26时13分1(主要)
18:00(n-choose-k)
/home/xiaolong/development/Guile/scripting//modules.scm:18:0:在程序n-choose-k中:
过程内模块查找:未绑定变量:事实
因此,尽管我正在加载
fact.scm
,但似乎不知何故,
fact
过程没有加载。我还尝试将
fact.scm
重命名为教程中的
fact
,并在shebang行之后更改加载脚本的参数,但结果相同


教程是错误的,还是我忽略了一些简单的内容?

看起来像是这样的事实。scm在定义模块之前加载,并且位于定义模块之外的另一个名称空间中。在这里,您可以在模块代码中直接使用(加载“fact.scm”)。不管怎么说,看起来医生的电脑里有一个bug。请提交错误报告,请参阅@Stefan Done.:)
#!/usr/local/bin/guile \
-e main -s
!#

;; How to run this program?
;; Example:
;; guile -e main -s factorial-script.scm 50
;; Explanation:
;; -e specifies the procedure to run
;; -s specifies to run this as a script
;; 50 is the number we take as input to the script

(define (fact n)
  (if (zero? n) 1
      (* n (fact (- n 1)))))

(define (main args)
  (display (fact (string->number (cadr args))))
  (newline))
Backtrace:
           4 (apply-smob/1 #<catch-closure 119cb80>)
In ice-9/boot-9.scm:
    705:2  3 (call-with-prompt ("prompt") #<procedure 11aa8e0 at ice-9/eval.scm:330:13 ()> #<procedure default-prom…>)
In ice-9/eval.scm:
    619:8  2 (_ #(#(#<directory (guile-user) 1233140>)))
In /home/xiaolong/development/Guile/scripting/./modules.scm:
    26:13  1 (main _)
     18:0  0 (n-choose-k _ _)

/home/xiaolong/development/Guile/scripting/./modules.scm:18:0: In procedure n-choose-k:
In procedure module-lookup: Unbound variable: fact