Сведения о вопросе

Oleksandrop

06:01, 9th August, 2020

Теги

Существует ли функциональный язык для экосистемы C++?

Просмотров: 404   Ответов: 9

Java имеет Scala и .NET имеет F# . Оба этих языка очень хорошо интегрированы в соответствующие платформы Java и .NET. Классы могут быть записаны в Scala, а затем расширены в Java, например.

Существует ли эквивалентный функциональный язык, который хорошо взаимодействует с C++?



  Сведения об ответе

+-*/

16:22, 11th August, 2020

Язык Felix от Джона Скаллера предназначен для взаимодействия с C++ и обеспечивает функциональную парадигму.

Однако с этим есть проблемы. Функциональные языки предоставляют первоклассные функции, которые позволяют создавать closures: функции, которые захватили и несут значения из среды, в которой они были определены. Это делает невозможным статическое определение времени жизни значений (поскольку закрытие может вывести значение за пределы своей области) и, следовательно, фактически требует сборщика мусора, но C++ не является сборщиком мусора.


  Сведения об ответе

KOMP

21:10, 13th August, 2020

C++ не имеет экосистемы в смысле Java или .NET. Там нет ни виртуальной машины, ни даже среды выполнения, есть только узкоспециализированная стандартная библиотека, которая по своей конструкции плохо работает в чисто функциональной среде. C++ даже не имеет стандарта ABI .

Учитывая все обстоятельства, я не уверен, что вы mean/expect.


  Сведения об ответе

repe

06:49, 27th August, 2020

А, что-то еще. Хотя это, конечно, не то, что вы имели в виду, метапрограммирование шаблонов в C++ является чисто функциональным.


  Сведения об ответе

SEEYOU

23:54, 4th August, 2020

Как уже было сказано, я не совсем уверен насчет C++ 'ecosystem'. Но Haskell имеет внешний интерфейс функций, который позволяет вызывать C функции из Haskell и Haskell функции из C.

Опять же, это C, я не совсем уверен, насколько далеко от C++ FFI...


  Сведения об ответе

SSESION

10:32, 2nd August, 2020

Так как Scala компилируется в Java байт-код и F# компилируется в .NET байт-код, выполненный для запуска на их соответствующих виртуальных машинах. Правильное сравнение было бы, если бы существовал какой-то функциональный язык, который компилируется в машинный зависимый код, готовый к запуску на компьютере, и да, есть.

Я не думаю, что это было то, что вы имели в виду, но лучшее, что я могу предложить-это FC++ . Boost -это еще одна библиотека, которая имеет множество функций, которые можно распознать как производные от функционального программирования.

Однако я готов поспорить, что там нет 'real' функционального программирования C++: es.


  Сведения об ответе

ЯЯ__4

15:04, 5th August, 2020

Язык 'D' был разработан как преемник языка C++. Чисто функциональное подмножество D разрабатывается Андреем Александреску для D 2.0. Я предполагаю, что D хорошо взаимодействует с C++.


  Сведения об ответе

P_S_S

16:11, 4th August, 2020

Я согласен, что я не уверен в экосистеме для C++. OCaml довольно популярен для выполнения функционального программирования за пределами .NET. F# также основано на нем.


  Сведения об ответе

qwerty101

04:25, 15th August, 2020

Этот вопрос был опубликован в 2008 году. Для справки, C++11 и далее имеют поддержку функционального программирования. См. другое обсуждение, обновленное для этого функционального программирования в C++


  Сведения об ответе

dumai

01:31, 14th August, 2020

C++ может и не быть чисто функциональным языком, но части STL определенно функциональны.

См. Bjarne Stroustrup FAQ (изобретатель c++)


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться