论坛首页 综合技术论坛

scheme语言的可读性??

浏览 10702 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-23  
FP

看到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就出来,绕口吧,^_^,无聊的时候做做题目挺开心的。

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

   发表时间:2007-05-23  
看看这篇文章。

http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/41c23db25ddcd899/5578f0f9ffff7839#5578f0f9ffff7839
0 请登录后投票
   发表时间:2007-05-24  
莎翁的原著的可读性对于,普通中学生,过四级的大学生,过八级的英语本科生,英语文学专业的硕士生是完全不一样的.
0 请登录后投票
   发表时间:2007-05-24  
接触一个新东西,特别是与现有东西差异大的,都会感觉不适应。不过习惯就好。

当初搞haskell,也是感觉不爽,后面感觉蛮好的。
0 请登录后投票
   发表时间:2007-05-24  
zhangyu8374 写道
接触一个新东西,特别是与现有东西差异大的,都会感觉不适应。不过习惯就好。

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

想问问后来用haskell写了实际程序吗?我在想它的适用范围,或者更擅长于做什么事情。
0 请登录后投票
   发表时间:2007-05-24  
你可以看看这个blog.

http://www.kamang.net/
0 请登录后投票
   发表时间:2007-05-24  
嗯,谢谢。学语言还是要和实际结合起来比较好。

顺便说一下,昨天看到一个OCaml Tutorial的wiki文档,作为入门学习好像不错的,在 http://www.ocaml-tutorial.org/
0 请登录后投票
   发表时间:2007-05-24  
haskell要出一本新书了,讲很多实际应用的.

http://www.realworldhaskell.org/blog/
0 请登录后投票
   发表时间:2007-05-24  
billgui 写道
嗯,谢谢。学语言还是要和实际结合起来比较好。

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


那个Tutorial的中文翻译正在展开中。http://ocaml.cn 上也有不少资料。
0 请登录后投票
   发表时间:2007-06-07  

zhuyi8319 写道:

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

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


无语。这是lambda演算的一部分。书上说了,list真的可以这样实现。
你看到后面,还有一个变态的"T变换",以及超变态的"丘奇计数",也是类似的东西。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics