I'm a newcomer to Guile and am currently using Guile to bind some C++ functions for users. Users already have many Scheme scripts, but their scripts don't comply with standards—for example, using define in expression contexts, which causes Guile to throw errors. I tried writing a code snippet with Claude to improve this, as shown below
(use-modules (ice-9 regex)) (define-syntax original-define (identifier-syntax define)) ;; Redefine define to avoid recursive calls (define-syntax define (lambda (stx) (syntax-case stx () ((_ var val) #'(begin (module-define! (current-module) 'var val) var)) ((_ (name . args) . body) #'(begin (module-define! (current-module) 'name (lambda args . body)) name))))) But this makes the definitions module-level. If I define the same variable at the top level and inside a lambda, they overwrite each other. Scheme is too difficult for me. Is there any way to achieve this functionality without modifying the scripts? I would appreciate your help.