2015-08-20 2 views
2

У меня такое ощущение, что общее восприятие, по крайней мере, в сообществе функционального программирования, заключается в том, что функциональное программирование полезно для создания DSL. Что делает его выше ООП в этой области?Почему функциональное программирование полезно для DSL? (Это?)

ответ

2

DSL могут быть реализованы как простые, конвейерные компиляторы. Многие языки FP традиционно хорошо оборудованы для такого рода вещей, и такие функции, как алгебраические типы данных и сопоставление образцов, являются наиболее полезными. Эти функции не имеют никакого отношения к функциональному программированию как таковому, но по историческим причинам они редко присутствуют на языках, отличных от FP.

Все становится еще интереснее, если вы хотите проверить свою реализацию компилятора. Для этого общие функциональные языки (например, Coq) не имеют себе равных. Нет никакого разумного способа сделать что-либо подобное для реализации компилятора OO.

С другой стороны, функциональные языки не обязательно являются наилучшим целевой для такого DSL компилятора (или хостом если это eDSL).

Существует также культура внедрения eDSL в качестве специальных переводчиков на языках FP, хотя я считаю этот подход наименее привлекательным.

Смежные вопросы