When & Where: 12:30pm, Monday, Feb 18, 2002, Room 400 AKW
GCJNI is a library that allows Haskell to invoke Java code via the Java Native Interface (JNI). GCJNI includes a tool that uses reflection to generate type-safe Haskell bindings for Java libraries. Since Java is an imperative language, the generated bindings use Haskell's IO monad to encode imperative programming constructs. While this is pragmatically useful, imperative programming in a functional language is still imperative programming, with all the drawbacks that entails. To demonstrate an alternative approach, I present a simple functional model of a particular Java library (Java2D). From this model I derive Haven, a purely functional library for scalable vector graphics in Haskell, implemented using Java2D.