Functional programming 为什么函数式编程适合DSL?(是吗?)

Functional programming 为什么函数式编程适合DSL?(是吗?),functional-programming,dsl,Functional Programming,Dsl,我有一种感觉,至少在函数式编程社区,人们普遍认为函数式编程有利于创建DSL。是什么使它在这方面优于OOP?DSL可以作为简单的流水线编译器实现。传统上,许多FP语言都能很好地处理这类问题,其中代数数据类型和模式匹配等功能是最有用的。这些特性本身与函数式编程无关,但由于历史原因,它们很少出现在非FP语言中 如果您想验证编译器实现,事情会变得更加有趣。因此,所有函数式语言(如Coq)都是无与伦比的。对于OO编译器实现来说,没有一种明智的方法可以做类似的事情 另一方面,函数式语言不一定是此类DSL编译

我有一种感觉,至少在函数式编程社区,人们普遍认为函数式编程有利于创建DSL。是什么使它在这方面优于OOP?

DSL可以作为简单的流水线编译器实现。传统上,许多FP语言都能很好地处理这类问题,其中代数数据类型和模式匹配等功能是最有用的。这些特性本身与函数式编程无关,但由于历史原因,它们很少出现在非FP语言中

如果您想验证编译器实现,事情会变得更加有趣。因此,所有函数式语言(如Coq)都是无与伦比的。对于OO编译器实现来说,没有一种明智的方法可以做类似的事情

另一方面,函数式语言不一定是此类DSL编译器(如果是eDSL,则是主机)的最佳目标

还有一种文化是将EDSL作为FP语言之上的特别口译员来实现,尽管我觉得这种方法最不吸引人