- 浏览: 84559 次
- 性别:
- 来自: 成都
最新评论
-
荆人七十:
谢谢分享~
在eclipse上面搭建Clojure开发运行环境 -
lanily:
楼主,跟你学clojure了,我想请教一个问题:本人事先是用j ...
Clojure细节之form和special form的区别 -
Dead_knight:
http://code.google.com/p/clojur ...
practical_clojure chapter3 控制程序流(未完) -
石建武:
谢谢。提供的离线包。但如果通过‘install new’方式, ...
在eclipse上面搭建Clojure开发运行环境 -
songry:
linkerlin 写道标题里面的 未完 ,啥时候能去掉?可以 ...
practical_clojure chapter3 控制程序流(未完)
文章列表
原帖地址:http://java.ociweb.com/mark/clojure/article.html#ReferenceTypes
作者:R. Mark Volkmann
译者:RoySong
引用类型(Reference types)
引用类型是针对不可变数据的可变引用。在Clojure中有四种引用类型: Vars
,
Refs
,
Atoms
和Agents
。
它们有很多相同点。
它们都能够包含任意类型的对象。
它们都能够被间接引用,在采取deref函数或者@读取器宏来检索它们中包含的对象时。
它 ...
注:本文基于jdk1.6和Clojure1.2
工厂方法
工厂方法模式定义了一个创建对象的接口,由子类来决定实例化哪一个类,意即将实例化推迟到子类。
当然,这个说法本身是干巴巴概念性的。让我们针对上篇简单工厂
的例子考虑一下,我们在SimpleFactory中
已经定义了产生IProduct实例的方法,这是在调用之前就定好了
产生IProduct实例的规则,可是如果遇到
需要在调用时才决定这个规则的情况时,SimpleFactory就无法满足了。
比如说,某次调用中需要在参数productType等于1时返回P ...
首先,需要下载并安装一个用于java开发的eclipse。链接地址:eclipse下载
然后,将eclipse解压到自定义的路径,比如:d:\eclipse。
下面就有两种方法安装Clojure的eclipse插件Counterclockwise:
打开eclipse ...
序
在java中,设计模式是多态和封装的重要表现形式,采用设计模式能够极大地提升可维护性和可扩展性,
那么,同样工作在jvm上面的Clojure能否运用这些模式,或者说是否同样需要这些模式呢?
注:本文基于jdk1.6和Clojure1.2
简单工厂
先看看简单工厂的java代码:
首先定义产品的接口:
public interface IProduct {
/**
* 使用产品
* @param msg
*/
public void use(String msg);
}
然后是实现了这个接口的两个具 ...
原帖地址:http://java.ociweb.com/mark/clojure/article.html#Concurrency
作者:R. Mark Volkmann
译者:RoySong
并发(concurrency)
维基百科上面对并发有一个精确的定义:“并发是一种系统属性,支持多条指令实时交叉运行,并且有 ...
原帖地址:http://java.ociweb.com/mark/clojure/article.html#Macros
作者:R. Mark Volkmann
译者:RoySong
宏(Macros)
宏被用来为语言添加新的功能结构。它们是在读取时(read-time)用来产生代码的代码。
函数总是要对它所有的参数求值,然而宏可以决定它的哪个参数被求值。这点对于实现诸如
(if condition
then-expr
else-expr
)这样的form非常重要。如果
condition
为true,那么只有
"the ...
原帖地址:http://java.ociweb.com/mark/clojure/article.html#Metadata
作者:R. Mark Volkmann
译者:RoySong
元数据(Metadata)
Clojure的元数据是附属于符号或者集合的数据,而没有具体的逻辑值。两个对象在逻辑上相同,就像扑克中的两张
王相同,能够拥有不同的元数据。举个例子,元数据能够用来指明某张扑克是否是弯的。而对于大部分扑克游戏来说,
事实上扑克是否是弯的完全跟扑克的价值无关:
(defstruct card-struct :rank :suit)
(def ca ...
原帖地址:http://java.ociweb.com/mark/clojure/article.html#Namespaces
作者:R. Mark Volkmann
译者:RoySong
命名空间(Namespaces)
java通过package来对类以及其中的方法来分组,而Clojure采用命名空间来对通过符号命名的东西来分组。能够
进行分组的东西包含:Vars, Refs, Atoms, Agents,
functions, macros以及命名空间本身。
符号被用来指定函数、宏和绑定的名称。而符号本身的作用域取决于它所属的命 ...
原帖地址:http://java.ociweb.com/mark/clojure/article.html#Destructuring
作者:R. Mark Volkmann
译者:RoySong
可变性(Destructuring)
可变性可以用于宏或者函数的参数列表中来提取参数集合的部分进行本地绑定。它同样可以用在let特殊form
或者binding宏中来创建本地绑定。
举个例子,假设我们需要一个函数接受一个list或者vector做为参数,返回参数集合的第一和第三个元素相加
的值:
(defn approach1 [numbers]
...
原帖地址:http://java.ociweb.com/mark/clojure/article.html#IO
作者:R. Mark Volkmann
译者:RoySong
Input/Output
Clojure提供了针对I/O操作的最小限度函数集合。因为在Clojure代码可以轻松调用java代码,所以针对I/O操作
经常使用的 ...
原帖地址:http://java.ociweb.com/mark/clojure/article.html#ConditionalProcessing
作者:R. Mark Volkmann
译者:RoySong
程序流控制
条件判断
特殊form if会检验一个条件,然后根据检验结果来决定执行两个表达式中的哪一个。
它的语法是(if condition
then-expr
else-expr
),其中的else部分(
else-expr
)是可选的。
如果then部分或者else部分需要不止一个表达式,则采用特殊form do来将它们包装 ...
原帖地址:http://java.ociweb.com/mark/clojure/article.html#DefiningFunctions
作者: R. Mark Volkmann
译者: RoySong
函数定义
使用defn宏可以创建一个函数,它的参数是函数名,可选的函数说明(用doc可以查看这个说明),
参数列 ...
原帖地址:http://java.ociweb.com/mark/clojure/article.html#Collections
作者:R. Mark Volkmann
译者:RoySong
集合(Collections)
Clojure提供了list, vector, set 和map集合类型。Clojure同样可以采用任何Java集合类,但这并不经常出现,因为 ...
原文地址:http://java.ociweb.com/mark/clojure/article.html
作者:R. Mark Volkmann
译者:RoySong
简介
这篇文章的目的是给Clojure做一个广泛公正的介绍,以简要的形式对多个特性进行了介绍.可以根据兴趣选看其中的章节.
对本文有任何意见或者建议发送邮件到
mark@ociweb.com
,这篇文章的最新版本会在 http://www.ociweb.com/mark/clojure/
刊载,上面有更新的日期,同样,你也可以在 http:// ...
在我准备独力把整本书翻译下来时,发现网上已然有同好在组织这个事情,所以我欣然参与了进去,地址是:
http://code.google.com/p/clojure-doc-en2ch/
希望喜欢Clojure的同好们来提出意见和建议