functional-programming - 寻找基于 YAML 的函数式语言

标签 functional-programming jvm yaml

我正在寻找一种将数据描述(如 YAML 或 JSON)与基本脚本功能(例如变量、条件表达式、回调函数)混合在一起的语言。描述列表和映射的层次结构的东西,如 YAML,但其中叶值是函数而不是文字数据。

到目前为止,我一直在通过在 YAML 之上添加表达式逻辑来解决这个问题。这让我可以在现有解析器的基础上构建,但它也会导致非常尴尬的语法,我必须自己实现它的编译器/解释器方面。我不认为我有能力做到这一点。

另一种方法是采用现有语言的某些子集,这样我就可以构建一个真正的编译器。遗憾的是,我并不精通任何函数式编程语言。老实说,我不知道从哪里开始。

谁能推荐一种具有部分或全部这些属性的函数式语言:

compact syntax for expressing hierarchical lists and maps
pure functional
lexical scoping
no OOP (using maps rather than static compound types)
first class functions (primary data structures will be lists/maps of functions)
type inference
compilable from an AST (if I have to write my own parser)
compilable to JVM bytecode (it would make my life a lot easier)

Scala 是一个显而易见的选择,因为它以 JVM 为目标,但据我所知,可能有更接近我需要的东西。有什么建议吗?

最佳答案

Clojure是最合适的。

  • map 和列表的紧凑语法 - 是
  • 纯函数式 - 不像 Haskell 那样纯,但足够函数式
  • 词法作用域 - 是
  • 无 OOP - 这是从头开始编写代码库时的首选架构
  • 一流的功能 - 是
  • 类型推断 - 支持类型提示的动态类型系统
  • 可从 AST 编译 - Clojure 语法几乎从 AST 开始
  • 可编译为 JVM 字节码 - 是

我认为它比 Scala 更合适,原因如下:

  • 更实用,更少面向对象的风格
  • 更紧凑的 map 和列表语法
  • 语法更接近 AST,更容易解析

关于functional-programming - 寻找基于 YAML 的函数式语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19370440/

相关文章:

azure - 有没有办法使用 Azure Devops 将 yaml 构建管道转换为发布管道?

javascript - 在 Node.js 中表示状态的普遍接受的模式是什么

language-agnostic - 将函数式语言概念与 OO 结合使用 - 有语言吗?

functional-programming - 使用 Lazy.jl 在 Julia 中生成惰性范围

java - 为什么 Maven 在 lib 目录中寻找一个 Artifact 而不是我正在运行它的 Artifact ?

java - 如何以编程方式在 java 中编辑 swagger yaml 文件以将请求参数添加到 REST 端点?

python - 在 Python 中映射 if 语句

java - jps、jstat、jstack 等命令显示 "<pid> not found"

java - JVM 总是会创建 Object 类的实例吗

ruby - 在 Ruby 中读取 YAML 文件