Что касается многоязыковой интеграции, объединение C и Haskell на удивление легко, и я говорю это как человек, который (в отличие от dons ) на самом деле не слишком опытный эксперт. Любой другой язык, который хорошо интегрируется с C, не должен быть намного хитрее; вы всегда можете вернуться к тонкому слою интерфейса в C, если ничего больше. К лучшему или к худшему, C по-прежнему является языком программирования lingua franca , поэтому Haskell более чем приемлем для большинства случаев.
... но. Вы говорите, что мотивированы проблемами с производительностью и хотите использовать «функциональный язык». Из этого я делаю вывод, что вы ранее не знакомы с языками, о которых спрашиваете. Среди определяющих особенностей Haskell является то, что он по умолчанию использует нестрогая оценка и неизменяемые структуры данных - которые невероятно полезны во многих отношениях, но это также означает, что оптимизация Haskell потому что производительность часто резко отличается от других языков, а отточенные инстинкты могут сбить вас с толку непонятными способами. Возможно, вы захотите просмотреть темы, связанные с производительностью, на вики Haskell , чтобы получить представление о проблемах.
Это не означает, что вы не можете делать то, что хотите в Хаскеле - вы, конечно, можете. На самом деле, и лень, и неизменность могут быть использованы для повышения производительности ( тезис Криса Окасаки дает несколько хороших примеров). Но имейте в виду, что когда дело доходит до работы, будет немного кривой обучения.
И Haskell, и OCaml предоставляют прекрасные преимущества использования языка семейства ML, но для большинства программистов OCaml, вероятно, предложит более мягкую кривую обучения и лучшие немедленные результаты.