Clojure 学习总结
Clojure 是一种运行在 Java 平台上的 Lisp 方言,一门古老语言的复兴之路
阳光岛主
阳光、快乐、创新
展开
-
Clojure 学习入门(17)—— 异常处理
二、异常处理 Clojure代码里面抛出来的异常都是运行时异常。当然从Clojure代码里面调用的java代码还是可能抛出那种需要检查的异常的。try,catch,finally 以及throw 提供了和java里面类似的功能: try、catch、throw、finally: Java代码 user=> (try (throw (Exception. "error")) (finally (p原创 2014-03-10 22:44:32 · 10494 阅读 · 0 评论 -
Clojure 学习入门(16)—— 正则表达式
一、创建正则表达式 re-pattern函数: 函数 (re-pattern) 接受一个字符串参数,返回一个正则表达式样式(java.util.regex.Pattern类的实例)。这个样式能用于正则表达式匹配 Java代码 user=> (re-pattern "\\d+") #"\d+" 也可以使用读取宏来直接用文本的方式输入正则表达式:在字符串前使用#符号。和用re-pattern函数原创 2014-01-12 07:38:23 · 12136 阅读 · 2 评论 -
Clojure 学习入门(15)—— 条件判断
一、标准的流程控制 if: 将一个判断表达式作为它的第一个参数进行求值。如果求值为true,那么就返回它的第二个参数(相当于“then”子句)的求值结果。如果结果为false(包括nil)就返回第三个参数的求值结果(相当于“else”子句),前提是有提供第三个参数并且不为空。 Java代码 user=> (defn is-small [number] (if (100) "yes" "no"))原创 2014-01-08 23:12:00 · 15598 阅读 · 0 评论 -
Clojure 学习入门(14)—— 循环控制
一、基于函数的流程控制 repeatedly: repeatedly字面意思为重复函数。一般的用法如下: Java代码 user=> (repeatedly 5 #(rand-int 11)) (6 8 2 6 6) 重复产生5次随机数。rand-int 11表示0至11的随机数。 这里顺便提一下repeat函数:repeat函数接受一/两个常量参数,用法如下: Java代码 user=>原创 2014-01-06 23:04:21 · 14090 阅读 · 0 评论 -
Clojure 学习入门(13)—— binding
Clojure里面是不支持变量的。Binding跟变量有点像,但是在被赋值之前是不允许改的,包括:全局binding, 线程本地(thread local)binding, 以及函数内的本地binding, 以及一个表达式内部的binding。def 这个special form 定义一个全局的 binding,并且你还可以给它一个”root value” ,这个root value在所有的线程里原创 2014-01-05 10:21:20 · 10947 阅读 · 1 评论 -
Clojure 学习入门(12)—— map/pmap
map 各种排序(println (sorted-map-by > 1 "a", 2 "b", 3 "c")) ;; {3 c, 2 b, 1 a};; 相等 value 取一个(let [results {:A 1 :B 2 :C 2 :D 5 :E 1 :F 1}] (println (into (sorted-map-by (fn [key1 key2]原创 2013-12-29 23:23:30 · 10474 阅读 · 0 评论 -
Clojure 学习入门(11)—— 宏 macro
` 原原本本地直译过去,不用`,let语句不被翻译,例如: (let [datastr '{:a 1 :b 2}]) ~' 后面的变量被直接翻译过去,例如:(let [~'conn "meta"] (with-mongo ~'conn)) '~ 变量名本身而非值,例如:(defn f1 [x] (println '~x ":" ~x)) (let [a 10] (f1 a)原创 2013-12-27 23:59:51 · 11212 阅读 · 0 评论 -
Clojure 学习入门(10)—— httpkit
Http-kit 是主要由Java 和 Clojure开发,为Clojure定制的零依赖的HTTP lib,仅用3000多行代码,实现了高性能 Server,Client,Timer。代码量少,实现简单,对Hacker友好。在普通的PC上进行性能测试时,http-kit server每秒能处理数万个请求,并能轻松保持数十万并发,每个连接消耗几k内存,并发数仅与内存大小有关,高并发不影响 laten原创 2013-12-23 00:02:05 · 12898 阅读 · 1 评论 -
Clojure 学习入门(9)—— 连接redis
project.cli 添加redis依赖: [clj-redis "0.0.12"](defproject myClojure "0.1.0-SNAPSHOT" :description "FIXME: write description" :url "http://example.com/FIXME" :license {:name "Eclipse Public License"原创 2013-12-22 23:34:09 · 9634 阅读 · 0 评论 -
Clojure 学习入门(8)—— 连接mongodb
参考推荐:Monger, a Clojure client for MongoDBclojure简单操作mongo原创 2013-12-22 23:00:18 · 9295 阅读 · 0 评论 -
Clojure 学习入门(7)—— 连接mysql
Clojure的contrib包中实现了对现有JDBC的封装,在wiki上有连接,该页面上包含了对不同的数据库的连接方法和基本的操作,但是这个页面上没有提供足够的信息,足够一个初学者能够使用Clojure来完成一个SQL操作。本文中我们将利用Clojure和Lein工具,简介一下做开发的基础。当然网上也有非常多对Clojure的SQL操作进行封装的库,我们这里没有使用。首先,如何配置你的MySQL原创 2013-12-22 22:30:53 · 9415 阅读 · 1 评论 -
Clojure 学习入门(6)—— 函数定义
一、创建函数: fn: fn是一个宏(后面进行详细描述),用于定义一个简单的函数,如下: user=> (fn [] "hello") #@eabd2f> user=> ((fn [] "hello")) "hello" user=> ((fn [x] x) "hello") ; 带参数 "hello" 简短的函数可以使用#(),%表示唯一的参数;%1、%2 ..表示第1、2、..个参原创 2013-12-22 21:50:18 · 8799 阅读 · 0 评论 -
Clojure 学习入门(5)—— 关键字
一、创建: Keyword: 关键字是一个内部字符串; 两个同样的关键字指向同一个对象; 通常被用来作为map的key。 user=> (keyword 'foo) :foo user=> (keyword "foo") :foo user=> (keyword "user" "foo") :user/foo user=> (keyword "abc def") :abc def原创 2013-12-22 21:23:53 · 7964 阅读 · 0 评论 -
Clojure 学习入门(4)—— 字符串
一、创建 函数str: 函数 (str) 接受任意数量的参数。如果参数不是字符串则将其转换为字符串,返回创建的新字符串。如果没有参数或为nil,则返回空字符串,""。 user=> (str 1) "1" user=> (str -2.5) "-2.5" user=> (str "a") "a" user=> (str "abc" 123) "abc123" user=> (str原创 2013-12-22 20:21:42 · 6878 阅读 · 0 评论 -
Clojure 学习入门(3)—— 数字类型
一、算术运算 加法+: 加法函数(+)接受任意数值类型的参数,返回它们的和;没有参数时返回0。 Java代码 user=> (+) 0 user=> (+ 1) 1 user=> (+ 1 2 3 4) 10 减法-: 减法函数(-)接受任意数值类型的参数。如果只有一个参数,则返回它相反的数。当有多个参数时,返回第一个参数减去后面所有参数的结果。 Java代码 user=> (-原创 2013-12-22 19:32:14 · 6799 阅读 · 2 评论 -
Clojure 学习入门(2)—— eclipse 插件
最近学习Storm,并且是源码级的,所以开始学习Clojure。以前听说过函数式编程,也听人说Erlang的牛逼,接触了Clojure才知道,原来Clojure就是JVM中的Erlang。网上基于Ubuntu环境下开发Clojure的资料太少,在这里整理总结,分享给大家。1. 安装Clojure可以手动的方式:java -cp /opt/clojure-1.5.1/clojure-1.5.1.ja原创 2013-12-22 17:40:49 · 12198 阅读 · 0 评论 -
Clojure 学习入门(1)—— 学习资料
官方文档: http://clojure.org/documentation 中文资料(强烈推荐): 1.clojure入门教程 http://xumingming.sinaapp.com/302/clojure-functional-programming-for-the-jvm-clojure-tutorial/ 2.clojure文档翻译 http://code.google.com/p/c原创 2013-12-22 08:38:20 · 13646 阅读 · 1 评论 -
几分钟内学习 Clojure
Clojure是JVM上的一个LISP语言变种。它比Common Lisp更强调纯函数式编程,但提供了一些STM工具以处理它所引入的状态问题。这个组合使并行处理更加简单,并且通常是自动的。(你需要Clojure 1.2或以上版本。); 分号作为注释的开始; Clojure 用一种把元素用括号括起来的像列表一样的方式来书写,元素之间用空格隔开; clojure 解释器会把第一个元素当做是函数或原创 2013-11-18 22:28:57 · 6478 阅读 · 1 评论