(define-syntax jlambda (syntax-rules (boolean) ((jlambda class boolean name argtype ...) (lambda (object . args) (let ((m (method class name boolean argtype ...))) (call-boolean-method object m (jvalues (zip (list argtype ...) args)))))) ((jlambda class return-type name argtype ...) (lambda (object . args) (let ((m (method class return-type name argtype ...))) (call-object-method object m (jvalues (zip (list argtype ...) args)))))))) (ppexpand* '(jlambda java.lang.String boolean contains java.lang.CharSequence))