(define (render-widgets sxml env default-bindings bindings contents) (let ((add-attr (lambda (attr) (environment-set! env (first attr) (second attr))))) (if (list? default-bindings) (for-each add-attr default-bindings)) (if (list? bindings) (for-each add-attr bindings)) (environment-set! env 'contents contents) (eval `(let ((++ string-append)) ,sxml) env))) ; Render the widget