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

Мне нравится ответ кайара. Если вы не хотите прикасаться к входным файлам, и если вы используете CMake, вы можете добавить последовательности символов деления в файл. Следующий код CMake, например, копирует входные файлы и соответственно переносит их содержимое:

function(make_includable input_file output_file)
    file(READ ${input_file} content)
    set(delim "for_c++_include")
    set(content "R\"${delim}(\n${content})${delim}\"")
    file(WRITE ${output_file} "${content}")
endfunction(make_includable)

# Use like
make_includable(external/shaders/cool.frag generated/cool.frag)

Затем включите в c ++, как это:

constexpr char *test =
#include "generated/cool.frag"
;
12
задан Mark Biek 31 August 2008 в 00:37
поделиться

8 ответов

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

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

8
ответ дан 2 December 2019 в 04:26
поделиться

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

Учитывая все обстоятельства, я не уверен, что Вы означаете/ожидаете.

7
ответ дан 2 December 2019 в 04:26
поделиться

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

7
ответ дан 2 December 2019 в 04:26
поделиться

Как был сказан, я не действительно уверен в C++ 'экосистема'. Но у Haskell действительно есть Внешний Функциональный Интерфейс, который позволяет, Вы для вызова C функционируете от функций Haskell и Haskell от C.

С другой стороны это - C, я не действительно уверен, как далеко вдоль C++ FFI...

6
ответ дан 2 December 2019 в 04:26
поделиться

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

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

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

3
ответ дан 2 December 2019 в 04:26
поделиться

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

3
ответ дан 2 December 2019 в 04:26
поделиться

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

1
ответ дан 2 December 2019 в 04:26
поделиться

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

Посмотрите Bjarne Stroustrup FAQ (изобретатель C++)

-1
ответ дан 2 December 2019 в 04:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: