`
文章列表
本节开始介绍神奇的amb函数,为引入逻辑程序设计做铺垫。关于amb,有清华王垠的一个文档: http://cs2.swfc.edu.cn/~wanghuan/wangyin1/amb/amb.html 4.35,与an-element-of类似: (define (an-integer-between low high)   (require (not (> low high)))   (amb low (an-integer-between (+ low 1) high))) 4.36,与练习3.69相关,貌似我没解过这道题,略过。 4.37,两点大大缩小了搜索范围: 1)通过限制 ...
4.27, ;;; L-Eval input: (define count 0) ;;; L-Eval value: ok ;;; L-Eval input: (define (id x)   (set! count (+ 1 count))   x) ;;; L-Eval value: ok ;;; L-Eval input: (define w (id (id 10))) ;;; L-Eval value: ok ;;; L-Eval input: count ;;; L-Eval value: 1 ;;; L-Eval input: w ;;; L-Eval valu ...
4.25,如果在scheme解释器的应用序求值下,unless定义为一个过程,那么 (* (factorial (- n 1)) 将无穷递归下去。如果在正则序时,由于延时求值,仅当需要计算时才求值此表达式,不会造成无穷递归,在1的时候正常结束递归。 4.26,在上一节求值器的基础上定义unless的语法形式还是很简单的, 首先在analyze过程添加分析unless:  ((unless? exp) (analyze (unless->if exp))) 然后定义unless?和unless->if (define (unless? exp)   (tagged-list?  ...
    swfheader是一个处理swf文件的工具脚本,可用于读取swf文件头信息、压缩和解压缩swf文件。很早以前发布过一个0.01版。最近复审了代 码,发现了一个愚蠢的读二进制文件错误导致没办法正确的解压或者压缩swf文件。今天更正了此bug,重构了部分代码并做了更多测试,已经可以正常使用。 项目地址: http://code.google.com/p/swf-util/ 项目描述:   一个轻量级的纯Ruby实现的swf文件处理脚本,可以读取swf文件头信息(大小、帧率、长宽、是否压缩、flash版本信息等)、压缩swf文件和解压缩swf文件。基于Apache License2协议发 ...
项目名称:Yanf4j(Yet another nio framework for java) 项目地址:http://code.google.com/p/yanf4j/ ,当前版本0.30-beta1 协议:Apache License, Version 2.0 简单描述:     有这么多nio框架了,为什么要another?重复造轮子也罢,这框架脱胎于一个服务器项目的网络层代码,期间参考了cindy、grizzly等nio框架的实现,加上自己的一些心得体会实现的。特点是简单、小巧、超轻量级。项目没有多大野心,目标是高效、简单地实现非阻塞模式的Server(TCP、UDP)并且保证不错的性 ...
    Ruby的创造者为《代码之美》撰写的文章标题是《代码如散文》。程序和散文有一些共性,首先是两者都必须有清晰的意图,散文内容是什么,想表达什么,程序的功能是什么,能做什么;其次两者在意图的表达上(功能的实现上)都依赖于写作的具体风格,编程的隐喻之一就是写作。你想表达的思想是好的,但是如果表达得难以理解,那么要把这个思想传播给读者将非常困难。代码被读和修改的次数是相当多的,因此一个很重要的观点就是你写的代码是给人读的,你需要考虑可读性的问题,归结于写出漂亮的代码。    判断代码是否漂亮似乎没有什么国家标准,更没有国家免检。代码是写给人读的,从这个角度上看,如果一段代码能让人很容易地读懂,让 ...
 Ruby如何简洁地读整个文件,你可以这样做: f = File.open( " test.log " , " r " ) result = '' f.each_line do  | line |    result += line end puts result 但是,更简洁的方法是: File.open( " test.log " , " r " ){  | f |  f.collect.join} 利用了文件打开的IO对象混入了Enumerable模块这一特点,通过map或者collect将所有文 ...

一封邮件

    今天邮箱里收到的一封邮件,标题是《寻找好心人帮忙,不介意保养我》,人名就不列出来了,石化中。 你好,我叫XX,今年20岁,是XX的一名在校大学生,因为家里贫穷,妈妈又得了重病,家里再也没钱供我读书了,想寻找好心的人资助我读大学,(附件有我的照片) 如能供我读大学并出钱为妈妈治病,要我做任何事都可以,能包养我是最好的! 希望好心人尽快与我联系,资助多少都感谢你,我会尽量报答好心人的。 XX本地的可以约我见面详谈, 外地的能来XX最好,不能来的也可以网上视频 电话 XXXXX    X小姐(XX) XXXXXXXXXX 可短信或电话联系  24小时为你等候 邮箱:XXXXXXX ...
1、异常的相等性 ,如果两个异常的class、message和backtrace一样,那么认为这两个异常是相等的,可以通过==判断。 def  method      raise   ' foobar ' end errors  =  [] 2 .times do     Thread.new do       begin         method       rescue  =>  e         errors  <<  e       end     end.join end puts errors[ - 2 ]  ==  errors[ - 1 ]     ...
1、Proc加了新方法Proc#yield ,这只是Proc#call的别名方法,是为了能让Proc也可以像block那样传入方法并且调用yield。 a_proc  =  Proc.new { | a,b |  a + b} a_proc. yield ( 1 , 2 )  #  => 3 def  test( & block)   block. yield ( 1 , 2 , 3 ) end test do  | a,b |    a + b    #  => 3 e
三、类和模块 1、Module#instance_methods, #private_instance_methods, #public_instance_methods Module这三个方法都将返回方法名 的symbol组成的数组,而非过去的字符串数组。 2、Module#const_defined?, #const_get 这两个方法都添加一个参数flag,用来决定是否将它的ancestor中的const包括在查 找链中,例如: module A; X  =   1 ;  def  foo; end end module B   include A   const_defined?  ...
二、Kernel 和 Object 1、引入了BasicObject对象,作为一个顶级的空白状态对象: BasicObject.instance_methods  #  => [:==,:equal?,:"!",:"!=",:__send__] Object.ancestors        #  => [Object, Kernel, BasicObject] 引入这个对象 ...
一、新的语法和语义 1、新的Hash定义语法: 例如{a:2}  等价于 {:a=>2} 但是 {"a":2} 出错,并不等价于 {:"a"=>2} 2、试验性质的block内的局部变量 在1.8,block的与外部同名的变量是同一个变量,也就是说block内的变量也可以修改外部的同名变量,这很容易形成难以查找的bug。 例子: #  {常规参数;局部变量} d  =   2 a  =   lambda { | ;d |  d  =   1 } a.call() d         #  => 2 注意到,分号后的d是bl ...
    与锋爷、小朱、阿宝中午打的直奔会场,上了酒店五层,发T-shirt,要求换上。立马在卫生间上演一处猛男秀。来的人不少,我们都坐到后排去鸟,一开始 在放某个关于opensource的video,鸟语听力很差再加上隔的远字幕都看不 ...
阻塞队列的性能对比 主要是比较offer跟poll两个方法的性能,开N个线程,每个线程往队列里写或者取500个整数。 线程数 20 50 100 200 500 1000 LinkedBlockingQueue      15,0 31,15 32,16 63,32 203,47 563,110 ArrayBlockingQueue 15,0 16,15 31,15 47,16 125,47 364,68 PriorityBlockingQueue 78,78 172,188 36 ...
Global site tag (gtag.js) - Google Analytics