- 博客(19)
- 收藏
- 关注
原创 Clojure:在REPL上实现一个简单的shell(三)
这个shell,我将它做成了一个小项目,请参考这里:https://github.com/xiejianming/iRepl注意它目前仍然基于我前两篇博文所描述的机制。
2012-09-14 17:08:22 825
原创 Clojure:算法练习的实现(二)——合并排序
在讨论合并排序(和分治法)的时候我们还会遇到寻找逆序对的问题。一个逆序对是这样子的:在一个数组a当中,当下标ia[j],那么(a[i], a[j])就称为一个逆序对(inversion)。在一个数组中寻找逆序对的数量常常会作为合并排序算法问题的一种变形。合并算法的主要操作在于merge函数,并且它具有n*log(2)n的时间复杂度。当要合并左、右两个有序的数组,merge函数会逐一从每个数组里
2012-06-06 22:55:44 1710
原创 Clojure:算法练习的实现(一)——合并排序
*本系列文章使用Clojure来实现一些经典的算法,主要目的用于记录笔者对算法的重新学习(因此可能不会有过多的说明)合并排序(Merge Sort)产生随机数组首先我们先给出一个产生随机数组的函数,这个函数随机地产生n个从1到m的整数数组:(defn rnm [n m] "Generates a n-size int array. The number ranges from
2012-06-04 17:08:28 1631
原创 Clojure:在REPL上实现一个简单的shell(二)
前文再续,书接上一回……话说上次我们已经实现了一个简单的骨架,它包括一个挂在REPL上面的钩子函数(ask函数)和入口函数(shell函数)。关于ask和shell,具体请参考这里。首先为了显得更正式点,我们对shell函数作了一点小的修改:(defn shell[& p] (let [prompt (if (empty? p) "my
2012-05-26 01:29:14 2191
翻译 神一样的编程语言? -- 发现一个编程语言“shen”
无论如何,首先是这个编程语言的名字吸引了我,“shen”。它的logo也很有趣: . | | | | | | |||||| . 一开始我还以为是某位中国大神的巨作,光看logo就倍感亲切,后来发现原来是位外国人写的,他就是Mark Tarver博士。废话不说,下面是官方首页的简单介绍,有兴趣的可以自行深入探讨(也欢迎一起探讨)。=======================
2012-03-16 10:16:05 3055
原创 事物的本质和数学的关系
世间的事物具体事物(名词)属性:大小、形状等抽象事物(形容词)关系:从属、层次(内外,高低)、并列、交叉抽象事物(动词)各种事物间的交互,反应到实际中就是变化时间:必须由变化来体现,本质上变化就是时间,如果不存在变化,那么时间是静止的,我们就可以说没有时间。但是变化一直存在,所以时间一直存在而且是真实的存在事物的分割与组合以下这两
2012-02-16 15:24:41 1780
原创 Clojue:开发学习Clojure中有用的资源
学习一门新的语言工具免不了需要练手和参考别人的代码,网上这样的资源很多。有的人会去看别人实现的框架和程序成品,但笔者窃以为这样子对本身对该语言不是很熟的人会产生扰乱,因为你的注意力很可能会被别人框架/程序的实现方式(架构、实现方法、引用的工具包等)转移,因此为了能更好地集中注意力到语言的特性和使用方式上面,个人认为最好能够首先使用“自己写些程序+参考API+参考Clojure本身源码”的方式来进行
2012-01-06 10:42:42 2171
原创 Clojure:在REPL上实现一个简单的shell(一)
REPL是一个Clojure环境,它不能直接调用命令行/shell里面的命令,现在我们想在REPL里面实现一个shell,让它既可以像在shell里面直接对系统(或shell的内置命令)进行调用,也可以做REPL下能做的事情。上一篇中我们写了一个read程序,这个程序会要求用户输入,并将获得的输入作为一个字符串来返回:(defn ask "Ask for an input."
2011-12-29 16:07:48 1911
原创 Clojure:一个请求用户输入函数的实现
笔者没有发现Clojure中有类似于Common Lisp中的“read”函数,在CL中的这个read会等待用户输入,并在获得用户输入后返回输入的值。这个read函数在设计一些简单的交互程序时还是比较有用的,并且在进行REPL试验时也具有一定的用途。例如下面这个使用了请求用户输入的hello world:(defn sayhi [] (let [name (ask "what's you
2011-12-26 22:54:28 1060
原创 FP中的严格求值和懒惰求值
函数式编程语言中对表达式的求值有两种方式,它们分别是:严格求值(Strict Eval)懒惰求值(Lazy Eval)这两种求值的区别在于它们对表达式(及其子表达式)的求值顺序不同:前者严格遵循在对函数求值之前先对函数的参数进行求值,也就是说对于给出的一个表达式,严格求值会先对参数进行求值,然后将求得的值传给函数,然后再对函数进行求值;后者则在只会需要的才时候进行求值,
2011-11-21 15:17:47 1399
原创 IPv4和IPv6的表示方式
本文是阅读《Java Network Programming, 3rd》一书的笔记。一个IPv4的地址通常用4个无符号的字表示,每个字的范围从0到255并由点号来分割一个IPv6由每组4个十六进制数组的8组数字组成,组之间用冒号分割,如“2001:0250:02FF:0210:0250:8BFF:FEDE:67C8”,每组数字中前置的0可以忽略不写,如前例可以写成“2001:250
2011-11-20 16:14:35 2668
转载 Java中指定proxy
本文引自于《Java Network Programming, 3rd》,章节2.4,版权为原作者/出版社所有。此处仅作为交流之用,未经编辑。Standalone Java applications can indicate the proxy server to use by setting the socksProxyHost and socksProxyPort proper
2011-11-16 10:30:12 795
翻译 关于Clojure的简单介绍
*注:下面内容翻译自Clojure官网的部分内容,Clojure官网网址为:http://clojure.org/。这里仅为抛砖引玉,故此处保留原文,如觉翻译生硬不通,请移步到官网或参考下面英文部分。Clojure is a dynamic programming language that targets the Java Virtual Machine (and the CLR
2011-11-09 22:40:54 908
原创 在Eclipse中整合Leiningen -- integrate Leiningen into Eclipse using 'External Tools'
*Note: If you want to read an English version of this article, please give me a sign so that I can translate my article into English (when I am available). Or, you can refer to this one alternativel
2011-11-09 00:35:09 3239 2
翻译 LISP 学习笔记 (四)-链表,递归和符号
*声明:所有参考资料均出自网络,版权归原作者所有 参考:LISP Tutorial 1: Basic LISP Programming: http://www.cs.sfu.ca/CC/310/pwfong/Lisp/1/tutorial1.html这次大脑饱和,个人没作太多的思考,文中大部分仅仅翻译了上面指导的部分文字。个人觉得链表和LISP中的递归处理是LISP的精粹所在,权当好好去领
2008-06-15 23:55:00 3036
原创 LISP 学习笔记 (三) -编辑,加载和编译LISP程序
首先,用任意文本编辑器编辑LISP程序文件,之后保存为*.lisp 文件。看图,注意里面的说明和定义了两个函数:我把它保存在C盘根目录下。然后用LISP加载这个文件,并随后调用了文件里面定义的函数:用“load” 函数加载LISP源文件,当“T” 出现时表示成功加载。如果文件有错,则加载不会成功。(* LISP里面“T” 表示“真”;用“NIL” 表示空值或“假”;而实际上,所有非
2008-06-14 11:38:00 4484
原创 LISP 学习笔记 (二)-自定义函数
第二笔——自定义函数如果你想定义自己的函数,可以通过使用“defun” 函数,defun 函数的格式是:(defun a1 (a2) (a3))。其中: a1 是你要定义的函数标识符,通常是用字符串来表示的一个函数名称; a2 是所要定义函数的参数列表(一个或多个参数),括号是必须的; a3 是用来计算所要定义函数的表达式,也就是函数体。括号不是必须的。
2008-06-14 10:32:00 2549 2
原创 LISP 学习笔记 (一)-初识LISP,表达式写法
因为在学习LISP。写写笔记,希望能持之以恒。 *声明:所有参考资料均出自网络,版权归原作者所有 参考:LISP Tutorial 1: Basic LISP Programming:http://www.cs.sfu.ca/CC/310/pwfong/Lisp/1/tutorial1.html首先,当然是建立环境,本来想着这个会有点麻烦,谁知道直接到http://sourceforg
2008-06-13 23:34:00 1993 1
原创 沉寂已久
今天为了下载一个关于Lisp的资源,试了一下当年(真的是当年啊,老久老久了……)读书时候注册的帐号,试了当年(真的是当年啊,老久老久了……)读书时候用的密码,居然^*$%&*的还都能用??!!!不可思议啊~天意啊~天啊~啊~果然有点无聊 -_-|||废话少说,努力学习中!
2008-06-13 23:11:00 595
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人