我有一种感觉,至少在函数式编程社区中,普遍的看法是函数式编程有利于创建 DSL。是什么让它在这方面优于 OOP?
最佳答案
DSL 可以作为简单的流水线编译器来实现。许多 FP 语言传统上都具备很好的能力来处理此类事情,其中代数数据类型和模式匹配等功能是最有用的。这些特性与函数式编程本身无关,但由于历史原因,它们很少出现在非 FP 语言中。
如果您想验证编译器的实现,事情会变得更加有趣。在这一点上,所有函数式语言(如 Coq)都是无与伦比的。对于 OO 编译器实现,没有任何明智的方法可以执行类似的操作。
另一方面,函数式语言不一定是此类 DSL 编译器(如果是 eDSL,则为主机)的最佳目标。
还有一种将 eDSL 实现为 FP 语言之上的临时解释器的文化,尽管我发现这种方法最没有吸引力。
关于functional-programming - 为什么函数式编程适合 DSL? (是吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32114648/