Самый простой способ, который я могу придумать: запустить подсказку в отдельном процессе. В качестве быстрой демонстрации, что-то глупое, как
import Control.Monad
import Language.Haskell.Interpreter
main = getContents >>= mapM_ (eval >=> print) . lines
может быть передано выражений на стандартный вывод и даст строковые результаты на стандартный вывод. Конечно, чтобы убедиться, что это безопасно, потребуется немного больше работы.
(Ошибка при условии, что в Java есть какая-то функция popen2-ish. В противном случае, возможно, вы можете сделать то же самое через сокеты.)