欢迎来到天天文库
浏览记录
ID:40056991
大小:2.12 MB
页数:72页
时间:2019-07-18
《Clojure Handbook (by jamesqiu)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、ClojureHandbook最后更新:2012‐11‐01发音:['kləuʒə]可落叶儿λ☯“和别人分享你的知识,那才是永恒之道”——somebody前言:这只是份简单的笔记,先写点废话在前面。书籍浩如烟海,技术方面的书也是汗牛充栋,可惜我们的阅读速度和理解力、记忆力太有限,好不容易学懂的知识转眼就变得非常陌生,“博闻强志、过目不忘”者毕竟罕见。对于大部分人来说,即便昔日信手拈来的东西,时间久了也会毫无头绪。所以知识不在于学过多少,而在于你能记住和使用多少。“好记性不如烂笔头”——近年来我慢慢习惯把费力学习的东西都做一个笔记,一是在学习的过程中加深印象,毕竟技术学习不同于欣
2、赏娱乐大片和浏览娱乐新闻看个过眼烟云;二是便于学而“时习之”,书上的东西一般是针对不同技术背景的读者,有很多作者费力用墨之处对你来说纯属废话,而他一笔带过的地方恰恰让你困惑不已。事实上本文的大部分内容不是读某一本或者某几本书的笔记,而是在我尝试Clojure语言特性或者用Clojure解决问题时的代码及说明。90%以上的人都不喜欢写东西,因为写作太难了,但写不那么正规的短信、微博、邮件、回帖这种片段文字就容易多了,本文的内容也是由不同时间写的简单小段文字拼接而成的,然后在有心情的时候做些调整。Lisp是一门神秘的语言,有无数的geek,hacker对他推崇备至,也有众多的程序员
3、对它嗤之以鼻,他和我们小学、中学、大学最先接触的Basic、Pascal、Fortran、C/C++是如此的风格迥异,以至于第一眼看上去就令人排斥。其根本原因在于,大部分人有天生的排异反应,对于和自己理念相左的事物,第一反应就是:切!胡扯!但其实人类能提出的任何新玩意儿,没有那个是和原有知识完全脱钩的。终于有一天,我看到一篇文章(Lisp的本质(TheNatureofLisp)),分析Lisp就是XML++,即Lisp表达式既表示数据也表示代码,代码即数据、数据即代码,..简化成(f..)。Clojure是Lisp出生数十年后的新的实现(200x年出品),或者JL
4、isp(LisponJVM)。对于从C/Java或者其他FP走过来的人,Lisp/Clojure有很多“别扭”的用法,很难记清楚用正确。学任何语言,包括Clojure,最佳的做法是把它用到日常的应用开发中,不断加深记忆。但即便你准备这么做了,手头没有一份方便的备查材料,刚开始也会步履艰难。我在使用的过程中也有这个体会,所以才不厌其烦地把一些学来并尝试过的东西记在本文档中备查,以便之后能行云流水地“玩转”它。个人认为,对于一门编程语言使用中的查阅,大致有几个阶段:查教程(tutorial)——》查手册(handbook)——》查自己写的库(把个人所有的编程语言经验写成类或函数)。
5、这个材料,不是严格的教程,或手册,而是介于这两者间。Clojure目前已经出版了几本书,这些书从各自的角度解读Clojure,大部分是英文的,不利于以母语速度快速浏览。如果说数学问题用公式表达最清楚,那么编程问题就是用图表和代码表示最清楚,这二者也是本文用的最多的表达方式,我尽量采用简短的代码来说明问题(简短代码也能说明很多事情,广受赞誉的《EffectiveJava》基本没有超过一页的程序代码)。能够熟练使用Java的程序员,参考本笔记,应该可以自如地开始着手写Clojure程序。另:本材料起名ClojureHandbook也勾起我对多年前买的一本后来不知去向的好书《TheJ
6、avaHandbook》的怀念(中文名Java使用手册,基本算当时市面上最早的Java书,作者PatrickNaughton还因私生活问题进过局子)。希望本材料能给同样对Clojure感兴趣的人一些帮助。——JamesQiujamesqiu@msn.comhttp://qiujj.com【目录】CLOJUREHANDBOOK1WHYCLOJURE1.1美观方便、DSL1.2易用的数据结构1.3STM模型1.4基于JVM1.5CLOJURE是LISPRELOAD1.6代码==数据1.7开发社区1.8几点期待2LANG2.1REPL2.2定义变量DEFLETBINDING2.3内部
7、变量2.4基本类型2.5类型判断2.6DO执行多条语句2.7条件语句IFWHENCONDCONDPCASE2.8循环语句2.9正则表达式REGEX2.10命名空间2.11结构DEFSTRUCT(不用了)2.12类DEFRECORD2.13接口DEFPROTOCOL2.14对比RECORD、PROTOCOL、PROXY、DEFMULTI2.15‐>和‐>>函数2.16编码命名规范3COLL数据结构3.1LIST3.2VECTOR3.3SET3.4MAP3.5操作3.6序列SEQ4函数4.1函数
此文档下载收益归作者所有