Разложение (модульность) в функциональных языках
Есть идея: функции (в FP) могут быть составлены так же, как компоненты в ООП. Для компонентов в ООП мы используем интерфейсы. Для функций мы можем использовать делегаты. Цель состоит в том, чтобы добиться разложения, модульности и взаимозаменяемости. Мы могли бы использовать внедрение зависимостей, чтобы сделать это проще.
Я пытался найти что-то о теме. Неудачно. Возможно, потому что нет достаточно больших функциональных программ, чтобы нуждаться в этом? При поиске приложений масштаба предприятия, написанных на FP, я нашел этот список.Функциональное программирование в реальном мире а такжеЭта бумага, Надеюсь, я просто пропустил убийственные приложения для FP, которые были бы достаточно большими, чтобы заслуживать декомпозиции.
Вопрос: Не могли бы вы показать достойное реальное приложение FP (желательно с открытым исходным кодом), которое использует декомпозицию на модули?
Бонус болтовни: Какой обычный шаблон используется? Какие функции обычно разлагаются на отдельные модули? Реализованы ли когда-либо реализации для целей тестирования?