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

标签 functional-programming dsl

我有一种感觉,至少在函数式编程社区中,普遍的看法是函数式编程有利于创建 DSL。是什么让它在这方面优于 OOP?

最佳答案

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

如果您想验证编译器的实现,事情会变得更加有趣。在这一点上,所有函数式语言(如 Coq)都是无与伦比的。对于 OO 编译器实现,没有任何明智的方法可以执行类似的操作。

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

还有一种将 eDSL 实现为 FP 语言之上的临时解释器的文化,尽管我发现这种方法最没有吸引力。

关于functional-programming - 为什么函数式编程适合 DSL? (是吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32114648/

相关文章:

ruby - 学习如何在 ruby​​ 中设计好的 API 包装器的资源

javascript - 使用 Reduce 将数组转换为对象

Haskell 的 u f=f.f 类型签名比我想要的要强

c# - 使用 C# 作为我的 DSL——这可能吗?如果可以,如何实现?

elasticsearch - 如何在 Elasticsearch 中用空格分隔和不带空格进行搜索

dsl - Xtext - 如何在自己的语法中使用 "import"

haskell - 理解状态单子(monad)

Python 3.3 的 yield 来自

javascript - 如何映射和过滤对象数组?

scala - Akka-Http DSL 发生了什么?