`
zhuyi8319
  • 浏览: 20769 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

scheme语言的可读性??

阅读更多

看到sicp的第2章,突然又想做做题了,一般我是有兴趣才做一下,

Exercise 2.4.  Here is an alternative procedural representation of pairs. For this representation, verify that (car (cons x y)) yields x for any objects x and y.

 

 

(define (cons x y)
  (lambda (m) (m x y)))

(define (car z)
  (z (lambda (p q) p)))

What is the corresponding definition of cdr?

挺容易得到正确答案的,

(define (cdr z)
  (z (lambda (p q) q))) 把p换成q就可以了,可以想通可费了点时间,呵呵

需要置换进去才知道是怎么回事,呵呵

以car为例

定义个 pair

(define x (cons 12 34))

当调用(car x) 的时候

置换进去,实际上就是

( (lambda (m) (m 12 34)) (lambda (p q) p))

继续,根据语法

(lambda (p q) p)就是前面 (lambda (m) (m 12 34))的参数了,

是参数就代入看看

函数体(m 12 34) 变为 ((lambda (p q) p) 12 34)

哈哈,12 34又变成(lambda (p q) p)的参数了,

结果 12就出来,绕口吧,^_^,无聊的时候做做题目挺开心的。

要是实际项目写这样的代码,有人读吗,

评论
14 楼 ychael 2008-03-28  
lambda (m) (m x y)换成Z就出来了的
13 楼 javaeye000 2007-07-16  
<br/>
<strong>zhuyi8319 写道:</strong><br/>
<div class='quote_div'>
<p><tt><tt><font>结果 12就出来,绕口吧,^_^,无聊的时候做做题目挺开心的。</font></tt></tt></p>
<p><tt><tt><font>要是实际项目写这样的代码,有人读吗,</font></tt></tt></p>
<p><tt><font/></tt></p>
<p><tt><font/></tt></p>
</div>
<br/>
拜托,这段代码不是无聊的游戏,是用来表示可以用procedure来表示data<br/>
<br/>
This may seem a curiosity now, but procedural representations of data will play a central role in our programming repertoire. This style of programming is often called message passing, and we will be using it as a basic tool in chapter 3 when we address the issues of modeling and simulation.<br/>
<br/>
<br/>
<br/>
12 楼 codemonkey 2007-07-10  
Joard推荐的文章里的Scheme程序就很好读阿。特别是实现矩阵转置和list comprehension的两个例子。算是简洁明白了吧?链接:http://pipboy.group.iteye.com/group/post/13212
11 楼 dennis_zane 2007-06-11  
是比较无语,楼主没搞清楚书中想表达什么,扯到可读性上去了。。。
丘奇数实在是天才的灵感。
10 楼 Lich_Ray 2007-06-07  
<br/>
<strong>zhuyi8319 写道:</strong><br/>
<div class='quote_div'><br/>
<p><tt><tt><font>结果 12就出来,绕口吧,^_^,无聊的时候做做题目挺开心的。</font></tt></tt></p>
<p><tt><tt><font>要是实际项目写这样的代码,有人读吗,</font></tt></tt></p>
<p><tt><font/></tt></p>
<p><tt><font/></tt></p>
</div>
<br/>
无语。这是lambda演算的一部分。书上说了,list真的可以这样实现。<br/>
你看到后面,还有一个变态的"T变换",以及超变态的"丘奇计数",也是类似的东西。
9 楼 cookoo 2007-05-24  
billgui 写道
嗯,谢谢。学语言还是要和实际结合起来比较好。

顺便说一下,昨天看到一个OCaml Tutorial的wiki文档,作为入门学习好像不错的,在 http://www.ocaml-tutorial.org/


那个Tutorial的中文翻译正在展开中。http://ocaml.cn 上也有不少资料。
8 楼 simohayha 2007-05-24  
haskell要出一本新书了,讲很多实际应用的.

http://www.realworldhaskell.org/blog/
7 楼 billgui 2007-05-24  
嗯,谢谢。学语言还是要和实际结合起来比较好。

顺便说一下,昨天看到一个OCaml Tutorial的wiki文档,作为入门学习好像不错的,在 http://www.ocaml-tutorial.org/
6 楼 simohayha 2007-05-24  
你可以看看这个blog.

http://www.kamang.net/
5 楼 billgui 2007-05-24  
zhangyu8374 写道
接触一个新东西,特别是与现有东西差异大的,都会感觉不适应。不过习惯就好。

当初搞haskell,也是感觉不爽,后面感觉蛮好的。

想问问后来用haskell写了实际程序吗?我在想它的适用范围,或者更擅长于做什么事情。
4 楼 zhangyu8374 2007-05-24  
接触一个新东西,特别是与现有东西差异大的,都会感觉不适应。不过习惯就好。

当初搞haskell,也是感觉不爽,后面感觉蛮好的。
3 楼 Trustno1 2007-05-24  
莎翁的原著的可读性对于,普通中学生,过四级的大学生,过八级的英语本科生,英语文学专业的硕士生是完全不一样的.
2 楼 林杰杰 2007-05-23  
听说有个黑客偷得某份重要的Lisp(这小子跟scheme长得忒像)源码,为了证明给被偷的单位(听说是美国军方,但是怀疑ing...不可信)他的确偷到了,于是就把最后一页打印出来,上面全是右括号……
1 楼 simohayha 2007-05-23  
看看这篇文章。

http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/41c23db25ddcd899/5578f0f9ffff7839#5578f0f9ffff7839

相关推荐

Global site tag (gtag.js) - Google Analytics