Каковы мои опции с точки зрения быстрого функционального языка для использования библиотеки в межплатформенном спокойном приложении C++?
Кажется, что почти все языки (функциональный или не) имеют некоторый способ назвать код C/C++ в непринужденной манере. Я хотел бы пойти наоборот - пишут приложение в QT с помощью C++ для бизнес-логики с сохранением информации, графический интерфейсов пользователя и материала, но выпадающий и используют функциональный язык для базовой библиотеки вычисления.
Которые просты в использовании этим способом? Может, например, код OCaml быть скомпилированным в статическую библиотеку и затем использованным приложением C++?
Спасибо, Rickard
Haskell имеет такую возможность, хотя взаимодействие с Qt/qmake и вашим процессом сборки с ghc может потребовать небольшой хитрости для работы:
http://www.haskell.org/haskellwiki/Calling_Haskell_from_C
Есть также проект под названием HaskellDirect, который кажется похожим на вашу цель:
Я бы хотел проверить qtHaskell и сделать все это на Haskell. Мое мнение основано на замечательном успехе Дона Стюарта в создании xmonad на Haskell .
Lisp и Haskell - отличные функциональные языки, но если мы рассмотрим простоту связывания кода C / C ++ вместе с языком, я бы рекомендовал lua.
Сразу же привязать функции C к lua чрезвычайно просто, интерпретатор - это сверхкомпактная и простая в сборке библиотека, он является одним из самых быстрых языков сценариев, а с luabind вы можете легко привязать классы C ++, создание экземпляров шаблонов и т. д. В прошлом мне приходилось делать привязки для множества языков сценариев, и я никогда не находил более простого, чем lua. Он также поддерживается с помощью swig, если вы предпочитаете связывать вещи через swig, что позволит вашему приложению поддерживать несколько языков сценариев.
С чисто языковой точки зрения аспект метафункции / метапрограммирования lua (сравнимый с lisp) позволяет очень легко поддерживать все виды парадигм программирования, хотя я лично считаю, что он лучше всего подходит для функционального программирования. Он чрезвычайно настраиваемый и хорошо подходит для встроенного использования.
Однако, поскольку вы уже используете qt, qtHaskell также может быть хорошим выбором.