`
zhuyi8319
  • 浏览: 21071 次
  • 性别: 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

相关推荐

    learn scheme

    ### Scheme语言介绍与计算机科学基础 #### 一、标题与描述概述 - **标题**:“Learn Scheme” - **描述**:“Lisp is a perfect language. Hack language.” 从标题和描述中可以看出,本文档旨在引导读者学习...

    Android-scheme-libscheme-lib是一个scheme使用的库

    Scheme-Lib是一个专门为Scheme编程语言设计的库,特别针对Android平台进行了优化和适配。Scheme是一种历史悠久、功能强大的Lisp方言,以其简洁的语法和强大的函数式编程特性著称。在Android平台上使用Scheme-Lib,...

    Go-GoScheme-只是用Go编写的另一个Scheme解释器

    3. **标准兼容性**:GoScheme通常会遵循R5RS或R6RS等Scheme标准,确保其与其他Scheme实现的兼容性,让开发者可以使用广泛认可的Scheme语言特性。 4. **可扩展性**:由于Go语言的并发支持和模块化设计,GoScheme可以...

    mit-scheme-ref

    这份参考手册按照章节结构组织,涵盖了Scheme语言的各个方面,包括但不限于特殊形式、等价谓词、数字处理、字符和字符串操作、列表管理、向量和位串的使用、杂项数据类型、关联数组、过程、环境、输入输出、操作系统...

    A_Tour_of_Scheme_in_Gambit

    ### Scheme in Gambit教程概述与知识点详解 #### 引言 《A Tour of Scheme in Gambit》是...通过这份详尽的指南,读者不仅可以学习到如何在Gambit-C中使用Scheme语言,还能深入了解Scheme语言的核心概念和高级特性。

    mit-scheme源代码

    1. 教育领域:由于Lisp的简洁性和可读性,MIT-Scheme常被用作计算机科学教育的入门语言,帮助学生理解编程基本原理和函数式编程思想。 2. 科学计算:Lisp的灵活性使其在数值计算、符号计算等领域有独特优势,MIT-...

    husk-scheme:Haskell平台的Scheme编程语言的完整实现

    "scheme"指代这个项目是关于Scheme语言的,而"haskell"则表示它与Haskell语言紧密相关。重复的"HaskellHaskell"标签可能是无意的,但可以理解为强调Haskell平台的重要性。 **压缩包子文件的文件名称列表:** "husk...

    Scala语言分析报告

    Scala的设计目标是提高代码的可读性、安全性和可伸缩性,同时允许程序员利用多核处理器的优势进行并行处理。 在类型系统方面,Scala是一个强类型语言,它的类型系统在编译时进行严格检查,确保代码的安全性和一致性...

    配色工具Color scheme

    "Color scheme 汉化版.htm"可能是该工具的中文版本,使得中国用户能够更直观地理解和操作,避免语言障碍。 在实际设计中,配色不仅要考虑美学,还要考虑可读性和对比度,尤其是在网页设计中,颜色的选用会影响到...

    计算机语言分类及特点.pdf

    声明式语言,如Html、XSLT、Scheme、Clojure、Haskell、SQL等,描述目标的性质,让电脑明确目标,而不是流程函数式编程是其一个子集。多范式语言,如C#、Lisp等,既可以支持传统命令式编程范式,又可以支持函数式...

    Expression-Builder:为Java和Scheme语言构建二进制,一元,常量和参数表达式

    4. **宏系统(Scheme)**:Scheme语言的宏系统允许在编译时进行代码生成,这对于构建复杂的表达式非常有用。 5. **反射(Reflection)**:在Java中,反射机制可能用于动态创建和执行参数表达式。 6. **元编程...

    TheSchemeProgrammingLanguage4thEdition

    本书不仅适用于Scheme语言的初学者,同时也为高级用户提供了一个深入探索Scheme特性的平台。Scheme是一种简洁而功能强大的Lisp编程语言方言,以其精简的语法、函数式编程特性以及灵活的语法扩展机制而闻名。下面将...

    guile-sly:GNU Guile Scheme中的功能性React式游戏编程。 (镜子)

    《GNU Guile Scheme中的功能性React式游戏编程:深入探索guile-sly》 ...对于想要探索Scheme语言在游戏开发中的应用或者寻求不同寻常的编程体验的开发者来说,guile-sly无疑是一个值得研究的项目。

    binary-releases:Cyclone Scheme编译器的二进制发行版

    Scheme 是一种 Lisp 家族的编程语言,以其简洁的语法、强大的宏系统和递归特性著称。Cyclone 项目旨在提供一个既能满足学术研究又能用于实际开发的 Scheme 实现,它强调静态类型检查和内存安全性,以减少运行时错误...

    最难学的十大编程语言,Java只排第三,第一你绝对想不到!.docx

    R 语言的语法是来自 Scheme。R 语言的作者是 George Ross Ihaka,他是一名统计学家和奥克兰大学统计系的副教授。R 语言排名第十名,作者头发浓密度:100%。 Python Python 是一种广泛使用的高级编程语言,属于通用...

    XSieve = XSLT + Scheme-开源

    XSieve是一种创新的XML转换工具,它将XSLT(Extensible Stylesheet Language Transformations)的灵活性与Scheme编程语言的强大功能结合在一起。XSLT是一种广泛使用的标准,用于转换XML文档,以改变其结构、样式或...

    Developing a coding scheme_developing_addinl_coding_a_

    这是一项关键任务,因为它确保团队成员之间的代码一致性、可读性和维护性。编码规范不仅包括变量命名规则、注释标准,还涵盖缩进、空格、换行等格式约定,以及更高级别的设计原则。 描述中的"Developing a coding ...

    hs-scheme:用 Haskell 编写的方案解释器

    通过研究HS-Scheme的源代码,开发者不仅可以学习到Haskell的编程技巧,还能深入理解Scheme语言的内部工作原理以及解释器的设计和实现。这对于想要提升编程技能,特别是对编译器和解释器感兴趣的开发者来说,是一个...

Global site tag (gtag.js) - Google Analytics