Let’s include a copy of the actual bug report:

 

 

Hi,

 

Suppose I have the following module "testexport" with the auxiliary module

"env.scm", used to set global environment variables:

 

-------------testexport.scm begin----------------------------------

(define-module (testexport)

  #:use-module (ice-9 pretty-print)

  #:use-module (env)

  )

 

(define (main)

  (pretty-print (string-append  "varA in main: " varA))

  (pretty-print (string-append  "varB in main: " varB))

  (pretty-print (string-append  "varC in main: " varC))

  )

 

(main)

-------------testexport.scm end----------------------------------

 

-------------env.scm begin----------------------------------

(define-module (env)

  #:use-module (ice-9 pretty-print)

  #:export(varA varB varC))

 

(define varA "A")

(define varB "")

(define varC "")

(define testval "x")

 

(cond

((string= testval "x") (set! varB "B"))

((string= testval "y") (set! varB "error"))

((string= testval "z") (set! varB "null"))

)

(pretty-print (string-append "varB post cond: " varB))

 

(if (string= testval "x")  (set! varC "C"))

(pretty-print (string-append "varC post if: " varC))

-------------env.scm end----------------------------------

 

When I run the above I get as output:

 

"varB post cond: B"

"varC post if: C"

"varA in main: A"

"varB in main: "

"varC in main: C"

 

Why can I reset the variables with both 'cond' and 'if' in env.scm, but

only the variable reset with 'if' is exported with the updated value?

Thanks

Mortimer