英文原文地址:http://clojure-doc.org/articles/tutorials/introduction.html
转载请注明译者(Dead_Micky)和出处
本菜鸟英语水平差,欢迎各位大神的批评指导。
该部分包括:
- Clojure语言基础
- 表达式,标识符(locals,vars)
- let forms
- 函数
- 基本数据类型
- 不可变数据结构入门
- Clojure应用类型总览(vars,atoms,agents,refs)
- 循环和递归
- Clojure宏入门
该项目遵循Creative Commons Attribution 3.0 UnportedLicense (包括图片和样式表)。
综述
<span style="font-size:18px;">注释:在随后代码示例中,如果没有多REPL特殊说明,我们将会把前缀(如”User=>”或者”my-proj.core=>”)省略。
此外,在clojure中,注释以一个分号开始,在此文档当中我们使用“; =>”(尾端注释)和“;; =>”(单行注释)用于说明前一个表达式的运算结果。
</span>
预备知识
Clojure是一门多用途的编程语言,并且也是一门实用性很强的语言。Clojure的语言就像Lisp的简单:代码由运算表达式构成。以下是一些例子。
5 ; ⇒ 5
"hi" ; ⇒ "hi"
[1 2 3] ; evaluates to the vector `[1 2 3]`
(+ 1 2) ; evaluates to the sum of 1 and 2
(if true "yes" "no") ; evaluates to the string "yes"
(println "hello!") ; evaluates to nil (but also prints "hello!")
一个表达式可以包含多个子表达式:
(+ 1
(* 2 3)
(/ 10 2)) ; ⇒ 1 + (2 * 3) + (10 / 2) = 12
方括号( brackets)及其中的内容也就是所谓的“forms”。 一个表达式被圆括号括起来可以说是一种函数调用,但宏或者是特殊form(要了解更多请移步Evaluation部分)。 Clojure不对空格敏感。而且空格也可以被逗号替代,所以你可以根据使用喜欢来选择使用哪个(例如你可以将向量写作[1 2 3]或者(1,2,3))。
Clojure 代码是块结构的和基于词法作用域(clojure支持动态域)的。Clojure是一种编译语言。Clojure的reader读取源代码,然后转换为JVM的二进制代码并在java虚拟机中执行。Reader还支持一些(语法糖)。
通过此教程,我们将依靠牛x的clojure cheatsheet 来自由查找需要的内容。并且能够从这里前往相关主题的文档页。在REPL中,你可以通过以下方式查看一个给定的函数的相关文档或者它的源代码。
在REPL中,你可以随时使用如下函数查看相关函数的文档:
(doc some-function)
(source some-function)
接下来就在你的REPL中快看看效果吧。