基于 Erlang VM 的 Clojure 实现 Clojerl

EPL-1.0
Clojure 查看源码»
Linux
2019-06-19
局长

Clojerl 是构建在 Erlang VM 之上的【实验性】Clojure 实现,目标是结合 Clojure 的功能和理念(如宏、集合、序列、协议、多方法和元数据等),再加上 Erlang VM 的健壮性,综合两者的长处来构建【分布式】系统。

初衷

Erlang 是构建安全,可靠和可扩展系统的优秀编程语言。它提供了开箱即用、不可变、且具有持久性的数据结构,其自带的并发语义是任何其他语言无法比拟的。

Clojure 属于 Lisp 方言,因此它继承了 Lisps 的良好特性。除了这些,Clojure 还引入了其他功能,例如协议、多方法和序列等。

Clojure 旨在简化并发程序的开发,并且它的一些并发抽象也适用于 Erlang。将 Erlang VM 的强大功能与 Clojure 的表现力相结合,可以提供一个有趣且有用的结果,使开发者的生活更简单,让世界变得更加幸福。

目标

  • 提供尽可能顺畅的互操作性,像 Clojure proper 和 ClojureScript 一样
  • 提供大多数 Clojure 抽象
  • 提供所有 Erlang 抽象和工具集
  • 在 Clojerl 中引入默认的 OTP 库

环境要求

构建 clojerl 需要 Erlang/OTP 18+ 以及 rebar3

git clone https://github.com/clojerl/clojerl
cd clojerl
make

示例代码

case.clje

(ns examples.case)

(let* [x :b
       y (case* x
                :a 1
                :b 2
                :c 3)
       z (case* y
                x 2
                #erl [:default :value])]
  (erlang/display x)
  (erlang/display y)
  (erlang/display z))

(defn case-match-ignore [x]
  (case* x
    #erl[_ y _] y))

;; First and third don't have to be equal
(let* [2 (case-match-ignore #erl[1 2 3])])

(defn case-match [x]
  (case* x
    #erl[a y a] y))

;; First and third don't have to be equal
(let* [2 (case-match #erl[1 2 1])])

更多示例代码点此查看

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

Clojerl (Clojure for the Erlang VM) 0.5.0 发布

Clojerl 0.5.0 已发布,Clojerl 是构建在 Erlang VM 之上的【实验性】Clojure 实现,目标是结合 Clojure 的功能和理念(如宏、集合、序列、协议、多方法和元数据等),再加上 Erlang VM 的健...

06/20 07:24

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

暂无博客

返回顶部
顶部