Хороший кроссплатформенный функциональный язык для использования библиотеки в приложении C ++? - PullRequest
10 голосов
/ 24 июня 2010

Какие у меня варианты с точки зрения быстрого функционального языка для использования библиотек в кроссплатформенном приложении Qt C ++?

Кажется, что почти все языки (функциональные или нет) имеют некоторый способ простого вызова кода на C / C ++. Я хотел бы пойти другим путем - написать приложение на Qt, используя C ++ для бизнес-логики с сохранением состояния, графических интерфейсов и прочего, но выпадающий и использовать функциональный язык для базовой библиотеки вычислений.

Какие из них легко использовать таким образом? Например, может ли код OCaml быть скомпилирован в статическую библиотеку и затем использован приложением C ++?

Спасибо, Рикард

Ответы [ 4 ]

6 голосов
/ 24 июня 2010

Haskell обладает такой возможностью, хотя для взаимодействия с Qt / qmake и процессом сборки с ghc может потребоваться немного хитрости:

http://www.haskell.org/haskellwiki/Calling_Haskell_from_C

Существует также проектназывается HaskellDirect, что также похоже на вашу цель:

http://www.haskell.org/hdirect/

2 голосов
/ 24 июня 2010

У меня будет соблазн проверить qtHaskell и сделать все это на Хаскеле. Мое мнение основано на замечательном успехе Дона Стюарта, который сделал xmonad в Haskell .

2 голосов
/ 24 июня 2010

AutoCAD использует AutoLisp , поэтому мое предложение будет Lisp.

1 голос
/ 25 июня 2010

Lisp и Haskell - отличные функциональные языки, но если мы рассмотрим простоту связывания кода C / C ++ вместе с языком, я бы порекомендовал lua.

Крайне просто связать функции C с lua сразу, интерпретатор очень компактен и прост в сборке, это один из самых быстрых скриптовых языков, а с luabind вы можете легко связатьКлассы C ++, создание шаблонов и т. Д. В прошлом мне приходилось делать привязки для многочисленных языков сценариев, и я никогда не находил такой простой, как lua.Он также поддерживается Swig, если вы предпочитаете связывать вещи с помощью Swig, что позволит вашему приложению поддерживать несколько языков сценариев.

С чисто языковой точки зрения, мета-особенность / метапрограммирование в lua (сравнимое с lisp) позволяет очень легко поддерживать все виды парадигм программирования, хотя лично я считаю, что он лучше всего подходит для функционального программирования.,Он чрезвычайно настраиваемый и хорошо подходит для встроенного использования.

Однако, так как вы уже используете qt, qtHaskell также может быть хорошим выбором для рассмотрения.

...