训练台

Clojure

从零学习 Clojure 的核心语法 运行方式 和基础实战

先定义

Clojure 是什么

Clojure 是一门用来写精确指令的编程语言,主要用于从零学习 Clojure 的核心语法 运行方式 和基础实战。你先不用记一堆术语,只要先理解:程序把输入按步骤变成输出。

最小运行信息文件 main.clj运行 clojure -M main.clj习惯 每学一个 Clojure 小语法 立刻写一个最小例子并运行
程序

一组按顺序执行的指令。先读输入,再计算,最后得到输出。

值和变量

值是数据,变量是给数据取的名字。先看名字,再看它保存了什么。

函数

把一件小事封装起来,给输入,拿输出,之后可以反复用。

运行环境

Clojure CLI 负责真正执行 main.clj 里的代码。

第一段可读代码

程序输出

entry point output syntax println
(println 42)
输出 42

语言族谱

Clojure 的族谱

先看清 Clojure 从哪里来 和哪些语言接近 再决定下一步怎么学

来源
LispSchemeJava
当前Clojure函数式和逻辑语言家族
所属家族函数式和逻辑语言家族
适合场景

适合 从零学习 Clojure 的核心语法 运行方式 和基础实战

零基础路径

1看一条规则2先猜输出3凭记忆敲4跑检查器5改一处重做

编程题库

先搜题 再练习

题库按阶段开放,用户可以搜语言、概念、题型、代码关键词,然后直接跳到对应练习。

18 道匹配题
1选择第一阶段 定义入门

Clojure 第 1 题

Clojure 第 1 题 选择和 输出一个值 最匹配的说法

2选择第一阶段 定义入门

Clojure 第 2 题

Clojure 第 2 题 选择和 给值命名 最匹配的说法

3选择第一阶段 定义入门

Clojure 第 3 题

Clojure 第 3 题 选择和 可复用函数 最匹配的说法

4选择第一阶段 定义入门

Clojure 第 4 题

Clojure 第 4 题 选择和 基础集合 最匹配的说法

5选择第一阶段 定义入门

Clojure 第 5 题

Clojure 第 5 题 选择和 输出一个值 最匹配的说法

6选择第一阶段 定义入门

Clojure 第 6 题

Clojure 第 6 题 选择和 给值命名 最匹配的说法

7选择第一阶段 定义入门

Clojure 第 7 题

Clojure 第 7 题 选择和 可复用函数 最匹配的说法

8选择第一阶段 定义入门

Clojure 第 8 题

Clojure 第 8 题 选择和 基础集合 最匹配的说法

9选择第一阶段 定义入门

Clojure 第 9 题

Clojure 第 9 题 选择和 输出一个值 最匹配的说法

10选择第一阶段 定义入门

Clojure 第 10 题

Clojure 第 10 题 选择和 给值命名 最匹配的说法

11选择第一阶段 定义入门

Clojure 第 11 题

Clojure 第 11 题 选择和 可复用函数 最匹配的说法

12选择第一阶段 定义入门

Clojure 第 12 题

Clojure 第 12 题 选择和 基础集合 最匹配的说法

13选择第一阶段 定义入门

Clojure 第 13 题

Clojure 第 13 题 选择和 输出一个值 最匹配的说法

14选择第一阶段 定义入门

Clojure 第 14 题

Clojure 第 14 题 选择和 给值命名 最匹配的说法

15选择第一阶段 定义入门

Clojure 第 15 题

Clojure 第 15 题 选择和 可复用函数 最匹配的说法

16选择第一阶段 定义入门

Clojure 第 16 题

Clojure 第 16 题 选择和 基础集合 最匹配的说法

17选择第一阶段 定义入门

Clojure 第 17 题

Clojure 第 17 题 选择和 输出一个值 最匹配的说法

18选择第一阶段 定义入门

Clojure 第 18 题

Clojure 第 18 题 选择和 给值命名 最匹配的说法

选择题

Clojure 第 1 题

1选择新题

Clojure 第 1 题 选择和 输出一个值 最匹配的说法

(println 42)

参考

main.clj 常用模式

Clojure CLIclojure -M main.clj
回忆输出看完一个小点后 合上提示自己写出来
手动跟踪运行前先逐行写出变量变化
亲手敲一遍少复制 多打字 每次只修一个小错

entry point output syntax println

程序输出

(println 42)
  • 先跑最小文件
  • 先打印一个确定值
  • 加代码前先看输出

variables assignment types def

值和命名

(def total 42)
(println total)
  • 给值起可读名字
  • 学习时一行只放一个想法
  • 改值前先追踪它

function collection Vector

函数和集合

(defn add [a b]
  (+ a b))

(def scores [40 2])
(println (count scores))
  • 函数保持小
  • 返回有用的值
  • 先用常见集合 不急着上框架