欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
Clojure
您可以在Wikipedia上了解到此条目的英文信息 Clojure Thanks, Wikipedia. |
Clojure
目录 |
简介
Clojure 是一个面向JVM 动态的通用编程语言,采用 Eclipse Public License 1.0 许可证。
Lisp 是一种编程语言,以表达性和功能强大著称,但人们通常认为它不太适合应用于一般情况。Clojure 是一种运行在 Java平台上的 Lisp 方言,它的出现彻底改变了这一现状。如今,在任何具备 Java 虚拟机的地方,您都可以利用 Lisp 的强大功能。
Clojure is about Data, Scala is about Types, Java is about Objects.
版本
功能
编译器
- ClojureCLR 基于 Microsoft Dynamic Language Runtime (DLR) 和.NET Common Language Runtime (CLR),C# 和 Clojure 编写。
- ClojureScript
- Small Clojure Interpreter (SCI)
语言
由Clojure开发的编程语言:
指南
wget https://repo1.maven.org/maven2/org/clojure/clojure/1.8.0/clojure-1.8.0.jar java -cp clojure-1.8.0.jar clojure.main user=> (+ 1 2 3) 6 user=> (def hello (fn [] "Hello world")) #'user/hello user=> (hello) "Hello world"
或使用 Leiningen REPL,它比 Clojure 自带的 REPL 好很多。
lein repl
Web应用启动:
lein run 或 lein ring server
Evaluation
Windows
C:\huihoo\clojure>powershell -noprofile -executionpolicy bypass -file .\win-install-1.10.1.469.ps1
PS C:\huihoo\clojure> clj -h
PS C:\huihoo\clojure> clj -r
Clojure 1.10.1 user=>
Leiningen
使用leiningen工具来管理Clojure项目和Java配置。
brew install leiningen
或者获得 https://raw.github.com/technomancy/leiningen/preview/bin/lein 并放到 /bin 目录下,chmod 755
cd bin,执行 ./lein // 开始安装 Leiningen
lein help
lein help $TASK for details.
接着:
lein new start-clojure cd start-clojure lein repl 将获得一些jar,如: Retrieving org/clojure/clojure/1.4.0/clojure-1.4.0.jar ... user=> (println "Give me some Clojure!") Give me some Clojure! nil
插件
fn,def,defn
defn builds on fn,defn是一个宏,它封装了def和fn的功能。
fn 创建一个匿名函数,fn 和 lambda 类似。
user=> (map (fn [x] (* x x)))
def 可以将一个匿名函数绑定到一个name上。
user=> (def my-function (fn [x] (* x x )))
defn 是 def 与 fn 的简写。
user=> (defn my-function [x] (* x x))
Clojars
- Clojars: Clojure libraries
- Third-party templates
大数据
- Apache Storm
- Cascalog, 基于Apache Hadoop的数据处理。
- Onyx
- Sparkling - A Clojure API for Apache Spark
- PigPen Map-Reduce for Clojure
数据分析
统计、数据分析和商业智能
机器学习
- clj-ml
- deeplearning4j
- nurokit Toolkit for machine learning in Clojure.
- k9
计算机视觉
自然语言处理
消息通信
- Langohr
- Machine Head, a Clojure MQTT Client
- ZeroMQ Async
事件CEP
并行并发
- Clojure web server benchmarks
- pulsar: Actor model 实现
- core.async Go式轻量级线程,⻓得像同步的异步.
- Avout: Distributed State in Clojure
金融货币
- ClojureWerkz Money a Clojure Library to Work With Money
验证授权
- keycloak-clojure Keycloak
- Friend
- Clojure Scrypt Library
- Buddy - Security library for clojure.
数据库存储
- Datomic
- DataScript
- Clojure libraries for MongoDB, RabbitMQ, validations, Neo4J, ElasticSearch, Apache Cassandra, Riak, Memcached, stream processing
- hikari-cp 连接池
- clj-record 类似 Ruby on Rails ActiveRecord
- PuppetDB
SQL
- Korma Tasty SQL for Clojure
- Honey SQL Turn Clojure data structures into SQL
- yesql https://github.com/krisajenkins/yesql
PostgreSQL
MongoDB
Clojure Monger, Monger @ GitHub
Cassandra
- cassaforte 建议:暂不使用高版本Cassandar,因为可能不支持。
- alia: High performance Cassandra client for clojure
- hayt: CQL3 DSL for Clojure
Redis
HBase
BI
Elasticsearch
Web HTTP
- ring
- Compojure
- clj-http
- http-kit
- aleph built on top of Netty
- Cheshire
- necessary-evil XML-RPC
- nginx-clojure
- Pedestal
- Hiccup
RESTful API
- compojure-api with Compojure & Swagger
- liberator
- ring-swagger, Swagger Spec for Clojure Web Apps
- Sweet-Liberty
IDE和Editor
- CIDER extends GNU Emacs is the Clojure(Script) Interactive Development Environment that Rocks!
- Light Table
- Nightcode
- Cursive IDE
- CCW IDE
- Nightcode
- clooj, a lightweight IDE for clojure
- Catnip, A web based Clojure IDE
- clojure-emacs for Emacs
- Clojure with Emacs
- SublimeREPL for SublimeText
- fireplace.vim: Clojure REPL support
GUI
项目
- Clojure @ GitHub
- ClojureWerkz团队开发了众多开源项目
- Status A Mobile Ethereum Client.
- Apache Storm
- tryclojure
- ClojureScript
- test.check QuickCheck for Clojure
- incanter
- Ring
- Compojure
- CravenDB文档数据库
- CircleCI's frontend
- Enlive
- Conjure A Rails like framework for Clojure.
- Boot: Build tooling for Clojure
- cljsjs
- alda 音乐编程语言
- 用 overtone 来演奏歌曲
- schema 数据描述与验证
- Timbre 日志库
- cronj cron for clojure
- clj-bloom
- Cognitect Cognitect Labs
文档
图书
用户
- Cognitect, Clojue之父,Rich Hickey 是该公司Co-Founder & CTO。
- 花旗信用实时风险估值系统Java/Clojure后端(1500节点分布计算)花旗投资信用部实时风险计算系统,逻辑使用Clojure。
- Puppet: Puppet Server, Trapperkeeper, PuppetDB, Trapperkeeper Webserver Service
- 沃尔玛: “Our Clojure system just handled its first Walmart black Friday and came out without a scratch.” - Walmart Labs
- Riemann
- LeanCloud 采用了多种语言混合来构建整个后端系统,包括 Clojure、Java、Node.js、Scala 等。其中 Clojure 构建了整个网站门户、存储开放 API、推送、聊天等核心服务,Node.js构建了云端代码服务(类似应用代码托管),我们还使用 Scala 编写的 Spark 任务来处理离线数据分析,此外,还有大量的统计类 MapReduce 任务使用 Java 编写并运行在 Hadoop 集群上。不同服务之间使用 RESTful 协议、RPC 框架或者队列进行通信。
图集
链接
- Clojure官网
- Clojure Handbook
- Clojure Blog
- Planet Clojure
- Clojars
- The Clojure Toolbox
- ClojureDocs
- Grimoire - Community Clojure Documentation
- Clojure API 中文文档, Clojure API 文档的中文计划
- CrossClj: cross-referencing the Clojure ecosystem
- 4Clojure, 4clojure @ github
- A Brief Beginner's Guide To Clojure
- Data Sorcery with Clojure
- http://groups.google.com/group/clojure
- Clojure 语言的设计
- Clojure 编程语言
- FlightCaster秘笈——Clojure和Rails
- ClojureScript通过Javascript将Clojure引入到浏览器端
- Java 下一代: Groovy、Scala 和 Clojure
- 研究指出:Clojure、CoffeeScript和Haskell是表现力最强的通用语言
- Best In Class