GUI в Java, Backend в SML?

Я большой поклонник языков функционального программирования (а именно Standard ML и его диалектов), главным образом из-за их выразительности, которая позволяет создавать очень целостный и чистый код. Я могу решить многие проблемы значительно быстрее с помощью ML, чем, скажем, с Java.

Однако Java действительно хороша, когда дело касается программирования графических интерфейсов (-> SWT). Я бы определенно не хотел делать это на функциональном языке.

Это подводит нас к моему актуальному вопросу: Есть ли хороший способ написать программу на ML, а затем обернуть ее графическим интерфейсом, написанным на Java?

] На данный момент я придумал следующее:

  • Скомпилируйте программу ML (например, с помощью MLton или Poly ML) и выполните двоичный файл как внешняя программа из Java ( http://www.rgagnon.com/javadetails/java-0014.html ).
    Проблема: Единственный способ взаимодействия внешнего и внутреннего интерфейса - это строки. Это может потребовать тонны (сложного) кодирования / декодирования.
  • Используйте JNI / JNA. Из того, что я читал, это позволит вам передавать целые числа, массивы и т. Д. Я думаю, что внешние программы должны быть написаны на C / C ++, чтобы это работало. С помощью интерфейса внешних функций MLton я могу написать интерфейс для своей функциональной программы на C и статически связать все это.
    Проблема: Очевидно,это работает только с динамическими библиотеками, то есть с DLL в Windows. Однако MLton позволит мне скомпилировать программу ML / C только в исполняемый файл. При попытке создать dll выдает целую кучу ошибок.

У кого-нибудь есть опыт работы с этим? Есть ли лучший способ сделать это?
Заранее спасибо! -Steffen

РЕДАКТИРОВАТЬ: Я знаю о Scala, который пытается перенести концепции функционального программирования на Java. Я пробовал, но не думаю, что он может конкурировать с реальным языком функционального программирования (с точки зрения выразительности)

6
задан smolkaj 29 July 2011 в 19:08
поделиться