Ответ 1
Используя GHC FFI, вы можете создать общую библиотеку, которая экспортирует функции с земли Haskell, что Java затем можно использовать через JNA. В качестве альтернативы вы можете взять эту же общую библиотеку и написать некоторый код, чтобы выставить ее через JNI для более "Java-y" интерфейса. Вы также можете сходить с ума и предоставить достаточно JNI через FFI для Haskell, чтобы действительно получить Java (это подход, который берет на себя бумага Lambada).
Я считаю, что общий раздел lib + JNA Haskell был бы самым простым и легким подходом. Это предполагает, что проще выставить некоторые функции Haskell для Java, чем подвергать некоторые объекты Java Haskell. Для некоторого понимания в другом направлении вас может заинтересовать Salsa, который является С#, а не Java, но принципы разработки интерфейсов могут представлять интерес.