Я видел несколько потоков, которые касаются программирования GUI в OCaml, но я не чувствую, что они явно приводят к четкому решению, когда требуется интерфейс GUI.
Мой вопрос, если быть более конкретным, заключается в следующем: какой самый эффективный (и легко подбираемый) подход при программировании GUI для программного обеспечения OCaml? Кто-нибудь вступает в контакт с простыми и эффективными модулями графического интерфейса пользователя в OCaml или обнаруживает эффективный пакет языка или бесплатного программного обеспечения, в котором это можно сделать, и который хорошо взаимодействует/играет с OCaml?
Я написал интерпретатор в OCaml, поэтому мои функции lexer, parser, core interpreter и т.д. - это модули OCaml. В настоящее время у меня есть решение командной строки ( "main.ml" ), которое позволяет пользователю взаимодействовать с интерпретатором, введя выражения в командную строку и получая распечатанный вывод терминала, который показывает разобранное и сокращенное выражение и т. решение командной строки предназначено только для тестирования. Я хочу, чтобы пользователи взаимодействовали через графический интерфейс, это может быть просто (Java-фреймы приходят на ум с прошлого года), но нужно каким-то образом взаимодействовать с модулями OCaml, которые я закодировал. В OCaml, который я нашел до сих пор, есть одна библиотека: http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual042.html. Кто-нибудь знает, эффективен ли он и полезен? (Я думаю, что я получил отрицательные комментарии об этой библиотеке)
Если бы я решил запрограммировать GUI на более оптимальном языке, будет ли взаимодействие с программным обеспечением: писать графический интерфейс на подходящем языке (возможно, С++, Python и т.д.), а затем скомпилировать письменный интерпретатор OCaml в исполняемый файл, а затем подключить GUI каким-то образом исполняемому файлу? Меня не интересует какое-то слабосвязанное или странное решение через трубы (я все время думаю о межпроцессной коммуникации для них, например, о том, что касается дизайна операционной системы) или сокетов (я склонен думать об этом для сетевого программирования), я представьте, что должен каким-то образом "разместить" мой интерпретатор, закодированный OCaml, в другом языке GUI-кода, если не сам OCaml. Любые мысли, рекомендации или предложения?
EDIT: Я был бы рад, если бы смог получить графический интерфейс для Linux-подобной операционной системы (то есть Linux RedHat). Если бы я мог заставить графический интерфейс работать в Windows, это было бы здорово, но, как минимум, я нацелен на Linux.
РЕДАКТИРОВАТЬ 2: Просто нашел это, есть ли у кого-нибудь мысли о "OCaml-Java"? http://ocamljava.x9c.fr/ Это звучит довольно интересно, так как оно "... возможность запускать объектные объекты Caml, которые были скомпилированы с использованием ocamlc, во-вторых, возможность компилирования Объективные источники Caml в исполняемые файлы jar." Меня беспокоит, что мне никогда не приходило в голову, что Java будет лучшим способом получить быстрый, но полезный графический интерфейс...
ТЕКУЩЕЕ РЕШЕНИЕ: рассмотрев различные варианты публикации решения, которые @Jeffrey Scofield поставил ниже, я выбрал в настоящее время глубже изучить LablGtk (что позволило бы мне оставаться в OCaml). Следующим перспективным вариантом для тех, кто смотрит на этот пост, было бы изучение интерфейса на иностранном языке с C, так как C и OCaml уже имеют отношения для начала. По-видимому, существуют способы вызова кода C в OCaml и OCaml в C (хотя это может быть очень сложно, поскольку вы по существу завершаете вызовы функций OCaml с несколько сложными функциями оболочки, которые будут более специфичны для типа функций, которые вы вызываете из в OCaml → то есть вам придется иметь дело с "отображением" каждой функции OCaml и ее аргументов внутри C). Взгляните на: http://www.mega-nerd.com/erikd/Blog/CodeHacking/Ocaml/calling_ocaml.html, для получения дополнительной информации. Первоначально OCaml-Java считалась отличной идеей, поскольку мне было удобно программировать Java GUI, но взаимодействие между двумя языками было не таким прямым, как с C и OCaml, плюс документация для этого оказалась тонкой (и с использованием OCaml -Java не был чем-то, что вы только что подобрали и добрались до материала Java GUI...). OCaml-JavaScript выглядел интересным, но имейте в виду, что вам, скорее всего, придется потратить время на хорошую кодировку HTML 5 в дополнение к некоторому JavaScript, если вы выберете этот путь. Кроме того, в SO есть несколько сообщений, в которых рассказывается о трубах и сокетах, которые являются действительными методами создания GUI-back-end системы. Однако это хорошая идея, если вы не возражаете, что ваша программная система/продукт будет "слабо связан". Я обновлю это решение, как только выясню LablGtk, и убедитесь, что он дает приемлемый интерфейс графического интерфейса для моего внутреннего кода OCaml.