(use jni jni-reflection srfi-18 expand-full) (begin-for-syntax (require-library jni) (require-library jni-reflection) (import-for-syntax jni) (import-for-syntax jni-reflection) (jvm-init "android.jar")) (define-syntax jimport (er-macro-transformer (lambda (x r c) (let* ((%begin (r 'begin)) (%define (r 'define)) (%class (r 'class)) (class-symbol (cadr x)) (prefix (string-append (symbol->string (caddr x)) "-")) (class-getter (string->symbol (string-append prefix "class"))) (class-methods (methods (class class-symbol)))) (cons %begin (append (map (lambda (m) `(,%jimport-method m)) class-methods) `(,%define (,class-getter) (,%class ,class-symbol)))))))) (define-syntax jimport-method (er-macro-transformer (lambda (x r c) (let* ((%begin (r 'begin)) (%define (r 'define))) `(,%begin (,%define bar)))))) (print (expand* '(jimport java.lang.String jstring))) (jimport java.lang.String jstring) (jprint (jstring-class))