Scheme的Lambda与Ruby的Block

2008 - 02 - 18

Scheme的Lambda与Ruby的Block

关键字: scheme ruby
SICP中有一个简单而经典的例子:构造一个通用的求和函数 这里的m, n和函数f都不是预先定好的。在Scheme语言中,利用 可以定义出一个这样的sum函数: (define (sum m n func) (if (> m n) 0 (+ (func m)(sum (+ m 1) n func)))) 要计算1+2+...+100,先定义一个函数(define (f x)(x)),然后代入到sum中:(sum 1 100 f)。当然如果每换一个通项公式都要定义一个函数的话,程序中就会充斥着大量一次性的小函数。采用Scheme的“匿名函数”(在Sch ...
刚才没什么事,决定试试用新学的Ruby把那个O(1)栈的问题做了一下。写着是挺快,一口气就下来了,只是代码里带着明显的C++气味。唉,习惯不是一 两天就能改的。代码和C++的差不多长。主要还是不习惯Ruby的思维,再加上那个C++代码中用了很多STL的东西,已经相当精简了。class Stack class Pair def initialize(first, second) @first=first @second=second end attr_reader :first, :second end def initialize @stack ...
Ruby声称自己是完全面向对象的语言,不像Java那样;当年Java也声称自己是完全面向对象的……总之,这样标榜自己显得不厚道。但Ruby在面向对象方面的确更加彻底,例如像1924这样的字面量都被认为是对象。 Ruby声称遵循“最小惊讶原则”,但实事上还是给我带来了不少的惊讶。在Ruby中,类(Class)的用法是相当灵活的。一个类的定义甚至是可以在程序运行时改变的,比如已经定义好一个MyClass类: class MyClass # code... end 如果事后需要在MyClass中添加一个方法,那么不必直接修改类的定义部分,只要在需要的地方写出来即可: class ...
观望Ruby也有几个月了吧,几个小时前我终于按捺不住,把Ruby安上了。里面带了个fxri,一个集成了Ruby解释器和文档的交互环境,感觉挺不错 的。可以随时查阅文档,对于初学来说是个很好的设计。安装包还捆绑了SciTE编辑器,这个编辑器可是牛得很啊。很多人认为功能最强的编辑器是 Emacs,但Emacs相当难用,而SciTE则把可定制性和易用性二者融合得很好。SciTE用好了是相当方便的,至于如何高效地使用SciTE,估 计能写一本书了。最让人兴奋的是Ruby带的帮助文档居然是Programming Ruby的CHM电子版。一口气把Ruby.new一章看完了,对Ruby也有了初步的认识。因为以前写 ...
ggggqqqqihc
搜索本博客
最新评论
<script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script><script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script> <script type="text/javascript"> var pageTracker = _gat._getTracker("UA-535605-1"); pageTracker._trackPageview(); </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值