# Wombat IDE - Scheme/Java Interop

In the last few days I’ve managed to get a version of Scheme/Java interoperability working where Scheme code can call to Java using a side channel alongside the normal communication with the host Wombat process.

Essentially, the calling from Scheme to Java uses this macro:

(library (wombat java)
(export call-to-java)
(import (chezscheme))

(define-syntax call-to-java
(syntax-rules ()
[(_ n a* ...)
(let ()
(printf "|!~s~a|!" 'n
(apply string-append
(map (lambda (a) (format " ~a" a))
(list a* ...))))
(if (and (not (null? result)) (eq? (car result) 'exception))
(apply error (cdr result))
result)))])))

Then, to call the function fact(5) in Java (if it’s been defined), you would just need to do this:

(call-to-java fact 5)

Then the Java end of things will take over, eventually sending back(120) (the interop code always returns a list).

Using this, I’ve managed to implement read-image, write-image, and draw-image with the same Image API.

If you want to switch over to the new versions of Wombat, you can get it here. You should have at least version 2.54.6.