loader.scm pasted by siiky on Thu Nov 9 14:17:34 2023
(define (loader-printer s) (print "Hello, " s)) (define-syntax include-with-prelude (syntax-rules () ((include-with-prelude path) (lambda (#!key printer) (include-relative path))))) ;(define loaded (include-with-prelude "loaded.scm")) ; doesn't work (define loaded (lambda (#!key printer) (include-relative "loaded.scm"))) (loaded printer: loader-printer)
loaded.scm pasted by siiky on Thu Nov 9 14:17:58 2023
(loader-printer "loaded here") (printer "loaded here")
no title pasted by siiky on Thu Nov 9 14:19:55 2023
$ csi -s loader.scm # not using include-with-prelude Hello, loaded here Hello, loaded here $ csi -s loader.scm # using include-with-prelude Hello, loaded here Error: unbound variable: printer Call history: <syntax> [loaded] (##core#let ((printer51 (##sys#get-keyword (##core#quote #:printer) rest56))) (##core#let () (includ... <syntax> [loaded] (##core#begin (##core#let () (include-relative52 "loaded.scm"))) <syntax> [loaded] (##core#let () (include-relative52 "loaded.scm")) <syntax> [loaded] (##core#begin (##core#include "loaded.scm" "loader.scm" ())) <syntax> [loaded] (##core#include "loaded.scm" "loader.scm" ()) <syntax> [loaded] (##core#begin (loader-printer "loaded here") (printer "loaded here")) loaded.scm:1 [loaded] (loader-printer "loaded here") loaded.scm:2 [loaded] (printer "loaded here") <syntax> [loaded] (##sys#get-keyword (##core#quote #:printer) rest56) <syntax> [loaded] (##core#quote #:printer) loader.scm:13 (loaded #:printer loader-printer) loader.scm:13 (loaded #:printer loader-printer) <eval> [loaded] (##sys#get-keyword (##core#quote #:printer) rest56) loaded.scm:1 [loaded] (loader-printer "loaded here") loader.scm:2 [loader-printer] (print "Hello, " s) loaded.scm:2 [loaded] (printer "loaded here") <--
include-with-prelude added by siiky on Thu Nov 9 14:27:08 2023
(define-syntax include-with-prelude
(er-macro-transformer
(lambda (exp r c)
(let ((path (cadr exp)))
`(lambda (#!key printer)
(include-relative ,path))))))