;; macro to generate boilerplate functions to get/set environment vars
;; attempt to remove 'globals' from source code
(define-syntax env-accessor
(syntax-rules ()
((_ name val)
(let ((env-var (symbol->string (symbol-append '+ name '+)))
(setter (symbol-append 'set-env- name))
(getter (symbol-append 'get-env- name)))
`(begin (define (,setter v) (setenv ,env-var v))
(,setter ,env-var ,val)
(define (,getter) (getenv ,env-var)))))))
(env-accessor 'scheme-prog "guile")
OzsgbWFjcm8gdG8gZ2VuZXJhdGUgYm9pbGVycGxhdGUgZnVuY3Rpb25zIHRvIGdldC9zZXQgZW52aXJvbm1lbnQgdmFycwo7OyBhdHRlbXB0IHRvIHJlbW92ZSAnZ2xvYmFscycgZnJvbSBzb3VyY2UgY29kZQoKKGRlZmluZS1zeW50YXggZW52LWFjY2Vzc29yCiAgKHN5bnRheC1ydWxlcyAoKQogICAgKChfIG5hbWUgdmFsKQogICAgIChsZXQgKChlbnYtdmFyIChzeW1ib2wtPnN0cmluZyAoc3ltYm9sLWFwcGVuZCAnKyBuYW1lICcrKSkpCiAgICAgICAgICAgKHNldHRlciAoc3ltYm9sLWFwcGVuZCAnc2V0LWVudi0gbmFtZSkpCiAgICAgICAgICAgKGdldHRlciAoc3ltYm9sLWFwcGVuZCAnZ2V0LWVudi0gbmFtZSkpKQogICAgICAgYChiZWdpbiAoZGVmaW5lICgsc2V0dGVyIHYpIChzZXRlbnYgLGVudi12YXIgdikpCiAgICAgICAgICAgICAgICgsc2V0dGVyICxlbnYtdmFyICx2YWwpCiAgICAgICAgICAgICAgIChkZWZpbmUgKCxnZXR0ZXIpIChnZXRlbnYgLGVudi12YXIpKSkpKSkpCiAgICAgICAgICAgICAgIAooZW52LWFjY2Vzc29yICdzY2hlbWUtcHJvZyAiZ3VpbGUiKQ==