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* ...))))
         (let ([result (read)])
           (if (and (not (null? result)) (eq? (car result) 'exception))
               (apply error (cdr 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.