我有一种感觉,至少在函数式编程社区中,常见的感觉是函数式编程对于创建DSL是有益的。是什么让它在这个领域优于OOP?
答案 0 :(得分:3)
DSL可以实现为简单的流水线编译器。传统上,许多FP语言都适用于此类事物,其中代数数据类型和模式匹配等功能最为有用。这些功能本身与功能编程无关,但由于历史原因,它们很少出现在非FP语言中。
如果要验证编译器实现,事情会变得更有趣。为此,总功能语言(如Coq)是无与伦比的。对于OO编译器实现,没有任何理智的做法。
另一方面,功能语言不一定是这种DSL编译器(或主机,如果它是eDSL)的最佳目标。
在FP语言之上还有一种将eDSL作为临时解释器实施的文化,尽管我发现这种方法最不具吸引力。