- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Clojure Web 编程实战
LeanCloud 庄晓丹 2014 年 10 ⽉
Agenda
•Clojure 简介
•Clojure ⼯具链
•Web 项⺫实战
•⼩结
•Clojure 得与失
•QA
2
Clojure 是什么?
Clojure is a dynamic programming
language that targets the Java Virtual
Machine (and the CLR, and JavaScript).
—
3
Clojure
• Lisp on JVM
• 函数式语⾔
• 动态语⾔
• 作者: Rich Hickey
• 2007 年 10 ⽉第⼀次发布
• 主⻚:
4
Clojure 真实和谎⾔
•前缀运算符
•任意参数个数
•括号复括号:Lost in stupid parentheses
•优先级明确通过括号嵌套表达
•括号组成的 form 即是数据结构 List
•Data is Code is Data.
•动态
•动态类型
•交互式编程
5
Clojure 真实和谎⾔
•函数式编程:First Class
•存储为 var
•作为返回值
•作为参数
•Clojure 是并发语⾔
•原⽣⽀持 STM ,提供多种并发原语
•core.async
•真实的情况:你⽤到的机会不多
6
Clojure 眼⻅为实
• 顺序
(do (println 1) (println 2) ……)
• 条件
(if (> a b)
“a⼤于b”
“b⼤于或者等于a”)
• 循环
(loop [n 1 ret 0]
(if (> n 100)
ret
(recur (inc n) (+ ret n))))
7
Clojure 眼⻅为实
•(+ a b c d) => a +b + c + d
•(* a (+ b c) d) => a * (b + c) * d
•(op arg1 arg2 ……)
List 数据结构
8
Clojure 眼⻅为实
• Code <=> Data
• List 结构:中间代码,宏可以操作并⽣成中
间代码
• 宏(Macro) :扩展编译器,加⼊新的语法结
构。
when
文档评论(0)