流是通过延时求值实现的,Ruby中实现stream也是可以做到,可惜就是没有尾递归优化。按照sicp,首要的是两个函数:delay和force:
def mem_proc(exp)
alread_run=false
result=false
lambda{
if !alread_run
result=exp.call
alread_run=true
result
else
result
end
}
end
def force(d ...
- 22:36
- 浏览 (35)
- 评论 (0)
- 分类: ruby & rails
- 进入论坛
前段时间看了这篇文章《Ropes:理论与实践
》。这两天为了提高工作中某个系统对外接口的效率,才认真学习了一番。本质上Ropes是将字符串表示为一棵二叉树,特别适用于长字符串的处理,貌似c++ STL库中也有这么个实现。具体实现和原理还是看这篇paper
。《Ropes:理论与实践
》
一文中给出的测试数据相当惊人,Ropes比之String和StringBuffer在append,insert,delete等操作上的效率都有一
个数量级以上的差距。跑下作者给出的测试程序,其实在测试的字符串不是很长的情况下,这个差距并没有那么大,这也从侧面说明了 ...
我们现在做的项目是典型的小型项目,整个组也就4、5个人,一个迭代周期基本在两周左右。尽管没有明确有“迭代”这么说法,却是以业务人员的策划案做分期
实现。这个分期,按我的理解其实就是迭代。最近发现的一个问题是,在迭代开始后,业务人员却没有办法保证需求在这个迭代周期完成前的稳定性,甚至在各个模
块集成之前,大家就提出N多意见,并且这些意见很多时候都是前后矛盾的。特别是在客户端的开发上,显然,客户端UI和操作习惯方面是最多变的地方。可怜我
们公司唯一的MM程序员快陷入变更频繁的泥潭了,改过去改回来是家常便饭。其实也是她过于老实,要 ...
- 21:06
- 浏览 (31)
- 评论 (0)
推荐两篇blog:
《java NIO 类库selector机制解析(上)》
《java NIO 类库selector机制解析(下)》
有一个奇怪的现象引出的话题,为了Selector.wakeup功能做到跨平台,
每个
Selector.open()
时,在
Windows
会建立一对自己和自己的
loopback
的
TCP
连接;在
Linux
上会开一对
pipe
(
pipe
在
Linux
下一般都是成对打开)。
java为了跨平台真是无 ...
17日的南方周末的一篇报道《17岁的残酷青春》,让我心神不宁,甚至昨日晚上做了噩梦。我很奇怪,每次看报纸,看到不正常的事总是愤愤地发表一番评论,乃至于老婆认为我有毛病:)。原文在这里
想的最多的是一个词,不停的在脑海中打转——异化。是什么样的原因让一个17岁的少年做出如此残忍的事情?对自己爱慕的同班同学下手,并冷静地分尸抛尸。
是什么样的因素让他的情感异化到这样的地步?不热爱生命,不尊重生命。如果不热爱自己的生命,那是不可能尊重生命的。仅仅是网游的问题吗?这样的总结是不
是太苍白 ...
最近碰到个需求,计算游戏得分的规则,类似这样:
游戏人数
第一名获得赌注
第二名获得赌注
第三名获得赌注
第四名获得赌注
二人
100%
0%
—
—
二人
(出现
2
个第
1
名时)
50%
50%
...
sicp的习题3.22,也就是以消息传递的风格重新实现队列,我的解答如下:
(define (make-queue)
(let ((front-ptr '())
(rear-ptr '()))
(define (set-front-ptr! ptr) (set! front-ptr ptr))
(define (set-rear-ptr! ptr) (set! rear-ptr ptr))
(define (empty-queue?) (null? front-ptr))
(define (front-qu ...
《王阳明大传》序,作者:周月亮
一生极重践履的阳明,本身就象只鞋。这只鞋上插着高贵的权力意志的权杖。形成心学的倒T字型结构——不是十字架,也不是钻不出地平线的大众的正T字型。他的“致良知”工夫就是要你站在地平线上。然后脚不离地的无限的向上升华,把人拉成顶天立地的大写的人。
拔着头发离地球的是阿Q,当缩头乌龟的是假洋鬼子,只是鞋而无权杖的是读书没有悟道的士子。只耍权杖而不愿当鞋的是政治流氓——那个意志不是高贵的权力意志,只是反人道的独裁欲望。
阳明的心学是这样一种生活方式:既生活在这里,又生活在别处!
...
4、 表
Table是lua的主要——实际上,也是唯一的——数据结构。Table不仅在语言中,同时也在语言的实现中扮演着重要角色。Effort spent on a good implementation of tables is
rewarded in the language,because tables are used
for several internal tasks, with no qualms about performance。这有助于保持实现的小巧。相反的,任何其他数据结构的机制的 ...
三个多月前翻译的,今天又找出来看看,后面的整理再发。
原文:http://www.tecgraf.puc-rio.br/~lhf/ftp/doc/jucs05.pdf
翻译:dennis zhuang (killme2008@gmail.com) http://www.blogjava.net/killme2008
转载请注明出处,谢谢。
摘要:我们讨论了lua 5.0实现的主要新特性:基于寄存器的虚拟机,优化表的新算法以便(将表)用作数组,闭包的实现,以及coroutines(译注:协程)
关键字: compilers, virtual ...
- 17:28
- 浏览 (659)
- 评论 (1)
- 分类: ruby & rails
- 浏览: 123038 次
- 性别:

- 来自: 广州

- 详细资料
搜索本博客
最新评论
-
scheme解决约瑟夫环问题 ...
嗯,我觉的各位偏离我的我的意思了,我的意思是用单向循环链表的传统方式来解决这个问 ...
-- by dennis_zane -
scheme解决约瑟夫环问题 ...
约瑟夫环的有O(1)的解,类似于位运算左移一位,具体数学(concrete ma ...
-- by manbearpig1 -
判断栈的增长方向
rubynroll 写道xombat 写道请问什么情况下需要判断栈的增长方向?估 ...
-- by Joo -
Ruby小技巧:处理方法调用 ...
很别扭吗?我觉的相当自然
-- by dennis_zane -
Ruby小技巧:处理方法调用 ...
难道你不觉得这么做很别扭?
-- by dazuiba






评论排行榜