Hello GNU Team! I wish to report a bug in either Guile's documentation or Guile's code with regard to running scripts. There are some examples of that given in Guile's documentation at: https://www.gnu.org/software/guile/manual/html_node/Scripting-Examples.html#Scripting-Examples In the following I will describe the problem. I have the file `modules.scm` with the following code: ----8<----start-of-code---->8---- #!/usr/bin/env sh exec guile -l fact.scm -e '(@ (my-module) main)' -s "$0" "$@" !# ;; Explanation: ;; -e (my-module) ;; If run as a script run the `my-module` module's `main`. ;; (Use `@@` to reference not exported procedures.) ;; -s ;; Run the script. (define-module (my-module)   #:export (main)) ;; Create a module named `fac`. ;; Export the `main` procedure as part of `fac`. (define (n-choose-k n k)   (/ (fact n)      (* (fact k)         (fact (- n k))))) (define (main args)   (let ((n (string->number (cadr args)))         (k (string->number (caddr args))))     (display (n-choose-k n k))     (newline))) ----8<----end-of-code---->8---- And I have the following `fact.scm`: ----8<----start-of-code---->8---- #!/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)) ----8<----end-of-code---->8---- The script is made executable by doing: chmod +x modules.scm Then I call the script as follows: ./modules.scm 10 3 This results in the error: ----8<----start-of-code---->8---- Backtrace:            4 (apply-smob/1 #) In ice-9/boot-9.scm:     705:2  3 (call-with-prompt ("prompt") # #) In ice-9/eval.scm:     619:8  2 (_ #(#(#))) 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 ----8<----end-of-code---->8---- According to my understanding of the tutorial in the Guile documentation that I linked to above this code should work. I also described the problem some time ago at: https://stackoverflow.com/questions/50272618/guile-scheme-scripting-tutorial-loading-scripts My Guile version is: guile (GNU Guile) 2.2.4 Best regards, Hans-Werner Roitzsch