摘要:
练习3-24原文Exercise 3.24. In the table implementations above, the keys are tested for equality using equal? (called by assoc). This is not alway...
阅读全文
posted @ 2015-03-26 12:40
nomasp
阅读(159)
推荐(0)
摘要:
练习3-23原文Exercise 3.23. A deque (“double-ended queue”) is a sequence in which items can be inserted and deleted at either the front or the rea...
阅读全文
posted @ 2015-03-26 11:57
nomasp
阅读(226)
推荐(0)
摘要:
你一事无成,还在那里傻乐。——韩寒《后会无期》过去的一年半,你踏入大学生活,接触了从未接触过的编程语言。你从一开始的C++语言跳到后来的C#语言,又从Common Lisp语言跳到Scheme语言,又从C语言跳到C#语言。直到现在算是定在了C#+Scheme。我不知道你还能坚持多久。...
阅读全文
posted @ 2015-03-25 13:30
nomasp
阅读(316)
推荐(0)
摘要:
练习3-22原文Exercise 3.22. Instead of representing a queue as a pair of pointers, we can build a queue as a procedure with local state. The local...
阅读全文
posted @ 2015-03-25 11:38
nomasp
阅读(108)
推荐(0)
摘要:
练习3-21原文Exercise 3.21. Ben Bitdiddle decides to test the queue implementation described above. He types in the procedures to the Lisp interpr...
阅读全文
posted @ 2015-03-25 11:09
nomasp
阅读(122)
推荐(0)
摘要:
练习3-8原文Exercise 3.8. When we defined the evaluation model in section 1.1.3, we said that the first step in evaluating an expression is to eva...
阅读全文
posted @ 2015-03-25 10:38
nomasp
阅读(239)
推荐(0)
摘要:
Office Open XML(缩写为:OpenXML或OOXML),为Microsoft开发的一种以XML为基础并以ZIP格式压缩的电子档案规范,支持档案、表格、备忘录、幻灯片等档案格式。从Office 2007开始,Open XML格式以及成为Office的预设文档格式——DOC...
阅读全文
posted @ 2015-03-24 12:54
nomasp
阅读(311)
推荐(0)
摘要:
关于数据抽象,有两个很重要的思想。一是在构建一些水平的抽象障碍在这个系统中。用某些对象来代换这些单独使用的抽象屏障。二是当需要使用某种形式的数据对象时,往往可以由其他人来将其实现,而我们并不需要知道具体操作。这都是在数据抽象方面非常强大的编程方法。但是这还不足以完成一个真正复杂的系统...
阅读全文
posted @ 2015-03-23 20:47
nomasp
阅读(121)
推荐(0)
摘要:
在书中符号数据一节中,作者写了关于微积分的演算规则的程序。这是一个很程序化的程序,我们所做的是在讲这些(数学)规则翻译成计算机语言。因为它有程序化的行为和结构,那么存在其他的方法使书写这个程序更加清晰吗?这些规则都具有左右两侧。左侧是我们想要采取的导数的表达式,有右边则是其的替代。用...
阅读全文
posted @ 2015-03-23 20:24
nomasp
阅读(246)
推荐(0)
摘要:
为添加…… 版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系本人。
阅读全文
posted @ 2015-03-23 19:33
nomasp
阅读(115)
推荐(0)
摘要:
在学习书中第二章的时候有个问题一直让我很困扰,那就是2.2.4节的实例,因为没法输出书中华丽的图案,只能是一对英文字母。这在几个月前浅浅的学了一会Common Lisp的时候也是如此,当时看到书中有个实例是书中输出了很赞的线条,而我只会输出一堆点。后来才知道让Lisp输出图形化界面是...
阅读全文
posted @ 2015-03-15 15:15
nomasp
阅读(228)
推荐(0)
摘要:
上一篇博文对应的是书中的第一章的一二两节,我们已经大致的有了一种构造的感觉不是么。书中展示了很多有趣的句法(syntax)。现在我们要让思想进一步的抽象,写这篇博客的时候并未学完整本书,更不敢说对书中的内容有一个多深的领悟。但我一路学习过来,就感觉书中的示例越来越抽象,作者所引导我们...
阅读全文
posted @ 2015-03-14 15:35
nomasp
阅读(142)
推荐(0)
摘要:
《计算机程序的构造和解释》这本书的目标并不是讲解一门编程语言的语法等,它是一种方法。不是在向你陈述知识,而是在教你如何做到想要做的东西。它是一个过程,一个精神。这些引导过程的东西就是所谓的程序规则的模式。书中用了许多的例子来诠释书名,我才疏学浅就不再举例往博客上推了,仅仅归纳一点总结...
阅读全文
posted @ 2015-03-12 22:56
nomasp
阅读(209)
推荐(0)
摘要:
display在common lisp中有format,在scheme中则有display,轻松应对各种输出。(display(+ 1 2 3 4))10;Unspecifiedreturn value(display‘(1 2 3 4))(12 3 4);Unspecifiedre...
阅读全文
posted @ 2015-03-12 14:28
nomasp
阅读(221)
推荐(0)
摘要:
赋值因为Scheme是函数式语言,通常来说,你可以编写不使用赋值的语句。然后如果使用赋值的话,有些算法就可以轻易实现了。尤其是内部状态和继续(continuations)需要赋值。R5RS中规定的用于赋值的特殊形式是set!,set-car!,set-cdr!,string-set!...
阅读全文
posted @ 2015-03-12 14:26
nomasp
阅读(413)
推荐(0)
摘要:
Scheme的数据结构在前面的博文中我们使用了list等等,像其他的编程语言一样,Scheme也有字符(Character),字符串(String),符号(Symbol),向量(Vector)等数据结构。下面我们来一一介绍。字符在某个字符前添加#\来表面该物是一个字符。例如,#\a表...
阅读全文
posted @ 2015-03-12 14:20
nomasp
阅读(377)
推荐(0)
摘要:
高阶函数的介绍高阶函数的英文名称是Higher Order Function,它们是以函数为参数的函数。主要用于映射(mapping)、过滤(filtering)、归档(folding)和排序(sorting)表。高阶函数让程序更具模块性,让函数更加通用。函数sort具有2个参数,一...
阅读全文
posted @ 2015-03-12 14:10
nomasp
阅读(370)
推荐(0)
摘要:
对象的比较eq?这个函数用来比较2个对象的地址,如果相同的话就返回#t。在Scheme中真用#t表示,假则用#f。 例如,(eq? str str)返回#t,因为str本身的地址的是一样的,但是”scheme”和”scheme”则被存储在不同的地址中,因此函数返回#f。注意,不要用e...
阅读全文
posted @ 2015-03-12 14:06
nomasp
阅读(324)
推荐(0)
摘要:
quotient、remainder、modulo和sqrt函数quotient用于求商数(quotient)。 函数remainder和modulo用于求余数(remainder)。 函数sqrt用于求参数的平方根(square root)。 以下是一些示例:(quotient73...
阅读全文
posted @ 2015-03-12 13:59
nomasp
阅读(229)
推荐(0)
摘要:
Edwin介绍Edwin是MIT Scheme系统的一个窗口式的编辑使用前端。启动Edwin实际是先启动Scheme系统,再启动也给Edwin前端。Edwin是一个使用Scheme写的交互式编辑器,其特点是支持Scheme表达式的编辑和求职。两种模式Edwin模式: 编辑Scheme...
阅读全文
posted @ 2015-03-12 13:53
nomasp
阅读(296)
推荐(0)
摘要:
练习3-7原文Exercise 3.7. Consider the bank account objects created by make-account, with the password modification described in exercise 3.3. Sup...
阅读全文
posted @ 2015-03-11 18:59
nomasp
阅读(161)
推荐(0)
摘要:
练习3-5原文Exercise 3.5. Monte Carlo integration is a method of estimating definite integrals by means of Monte Carlo simulation. Consider comput...
阅读全文
posted @ 2015-03-11 18:08
nomasp
阅读(128)
推荐(0)
摘要:
练习3-1原文Exercise 3.1. An accumulator is a procedure that is called repeatedly with a single numeric argument and accumulates its arguments int...
阅读全文
posted @ 2015-03-08 17:06
nomasp
阅读(168)
推荐(0)
摘要:
练习2-81这里再次需要用到第186页的创建表格部分内容。当然了现在完全可以只是将make-table加载到这道题中。还有我们前面几题中用到的apply-generic。a) 载入 Louis 的强制过程后,对两个复数调用exp会出现解释器假死的情况。b) Louis并没有纠正该...
阅读全文
posted @ 2015-03-06 12:27
nomasp
阅读(146)
推荐(0)
摘要:
练习2-79首先需要加载第125页的apply-generic函数,然后添加题中要求的通用型操作equ?。(define (equ? x y)(apply-generic ‘equ? x y))题目要求我们能够处理常规的数、有理数和复数。分别列出如下。常规数:(define (ins...
阅读全文
posted @ 2015-03-06 12:24
nomasp
阅读(136)
推荐(0)
摘要:
练习2.77我们首先来看看题目中描述的问题,当Louis Reasoner试着求值(magnitude z)时,程序中不断的寻找。一开始是通过apply-generic、而后是map,最后是get。这三个函数在书中都有很好的解释,我自知才疏学浅就不介绍了。最后一步的get中,最后由于...
阅读全文
posted @ 2015-03-06 12:23
nomasp
阅读(143)
推荐(0)
摘要:
练习2.76这是一道论述题了吧。首先是带有显示反派的通用型操作,这种策略要求使用者留意命名方面的冲突。如书上所说,这种策略具有不可加性,因为每当增加新类型的时候,所有通用型操作都要求做相应的修改以适配新的类型。至于增加新的操作,同样因为这一点而不适用。然后是数据导向的风格,如书上的大...
阅读全文
posted @ 2015-03-06 12:19
nomasp
阅读(113)
推荐(0)
摘要:
练习2.75通过模仿书上的make-from-real-imag函数来完成此题。(define (make-from-mag-ang x y) (define (dispatch op) (cond ((eq? op ‘real-part) ...
阅读全文
posted @ 2015-03-06 12:17
nomasp
阅读(151)
推荐(0)
摘要:
练习2.73a小题,这是由于Scheme对数字、变量的直接规定,前者会被当作数值类型,后者则会被当作符号类型。因此没必要将这两个谓词添加到数据导向分派中了。如果给数值类型或者符号类型加上一个标志,在get的过程中,又对已知的类型做判断,岂不是在浪费空间和时间。 b小题,我们根据书中已...
阅读全文
posted @ 2015-03-06 12:16
nomasp
阅读(170)
推荐(0)
摘要:
练习2.70既然要解码,那必须先将树给定义好了。(define tree (generate-huffman-tree ‘((A 2) (NA 16) (BOOM 1) (SHA 3) (GET 2) (YIP 9) (JOB 2) (WAH 1))然后就是来编码题目中给出的歌词了。...
阅读全文
posted @ 2015-03-05 10:50
nomasp
阅读(112)
推荐(0)