【SICP练习】66 练习2.37

 练习2.37 这道题花了我太长的时间了,一开始我就把题目中的m看成了w。然后题中给出的dot-product的两个参数我还以为一个是向量另一个是矩阵。怎么算都算不出来,直到看到“返回求和......

2015/09/08 21:47
37
【Scheme归纳】6 赋值

赋值 因为Scheme是函数式语言,通常来说,你可以编写不使用赋值的语句。然后如果使用赋值的话,有些算法就可以轻易实现了。尤其是内部状态和继续(continuations)需要赋值。 R5RS中规定的用...

2015/09/08 21:45
96
【SICP练习】29 练习1.35

 练习1.35 依旧是每一小节中比较简单的第一题,计算黄金分割率的过程如下: (define get-golden-ratio(fixed-point (lambda (x) (+ 1 (/ 1 x))) 1.0)) 虽然比较简单,但我们还是测试一下...

2015/09/08 21:46
2
【SICP练习】35 练习1.40

 练习1.40 首先根据公式x^3+ax^2+bx+c写出相应的cubic过程,它的返回值是一个接受参数x的过程: (define (cubic a b c) (lambda (x) (+ (cube x) (* a (square x)) (* b x) c))) (newto...

2015/09/08 21:45
0
【SICP练习】74 练习2.45

 练习2.45 我们先将right-split和up-split抽象出一个split来。 (define (split big-combinersmall-combiner) (lambda (painter n) (if (= n 0) painter (let ((smaller ((split big-comb...

2015/09/08 21:47
26
【SICP练习】31 练习1.37

 练习1.37 根据题目中的意思通过观察得到k项有项连分式的一种表达方式: f=N1/(D1+(N2/(…+Nk/Dk))) 这个式子可以不断展开,但如果我们把每一个”+”后面的式子记作T(i)。不对,我们应该...

2015/09/08 21:47
1
【SICP练习】36 练习1.41

 练习1.41 对于一个接受单个参数x的函数f来说,要将它应用多一次的办法是执行以下表达式: (f (f a)) 由此可得相应的double函数,它接受一个函数f,并且返回一个能将f应用两次的过程: ...

2015/09/08 21:45
18
【SICP练习】60 练习2.30

 练习2.30 如果这道题感觉有点难度的话,可以回过头来看看75页定义的两个scale-tree。我的定义如下: (define (square-tree tree) (cond ((null? tree) ‘()) ((not (pair? tree)) (squa...

2015/09/08 21:47
1
【SICP练习】121 练习3.52

练习3-52 原文 Exercise 3.52. Consider the sequence of expressions (define sum 0) (define (accum x) (set! sum (+ x sum)) sum) (define seq (stream-map accum (stream-enumerate...

【SICP练习】61 练习2.31-2.32

 练习2.31 我想说我已经越来越喜欢抽象了,将上一题中的map版本的square-tree抽象的方法是添加一个参数f,f是一个函数,因此将square替换成f即可。如下。 (define (map-tree f tree) (m...

2015/09/08 21:46
6
【SICP练习】65 练习2.36

 练习2.36 虽然accumulate正在变得越来越复杂,但我还并未完全领悟到它的深刻意义。不过直觉告诉对于序列的序列,我们要做的是依次取出它每个序列的第一个元素。此方法来源于网络,我一直...

2015/09/08 21:47
18
【SICP练习】126 练习3.57

练习3-57 原文 Exercise 3.57. How many additions are performed when we compute the nth Fibonacci number using the definition of fibs based on the add-streams procedure? Show tha...

【SICP练习】106 练习3.7

练习3-7 原文 Exercise 3.7. Consider the bank account objects created by make-account, with the password modification described in exercise 3.3. Suppose that our banking system r...

【SICP练习】41 练习1.46

 练习1.46 这道题要求我们写一个过程iterative-improve,其接受两个过程为参数,一个是判断检测是否足够好的good-enough?和另一个改进猜测的improve。其有一个猜测的数字作为参数,然后返...

2015/09/08 21:45
2
【SICP练习】132 练习3.63

练习3-63 原文 Exercise 3.63. Louis Reasoner asks why the sqrt-stream procedure was not written in the following more straightforward way, without the local variable guesses: (d...

【SICP归纳】6 副作用与环境模型

虽说叫做副作用显得不太好听,但在Lisp中副作用还是非常重要的。而相对于所有状态都必须显式地操作和传递额外参数的方式,如果引进赋值和将状态隐藏在局部变量中,那么就可以用更加模块化的方...

【SICP归纳】2 高阶函数和数据抽象

上一篇博文对应的是书中的第一章的一二两节,我们已经大致的有了一种构造的感觉不是么。书中展示了很多有趣的句法(syntax)。现在我们要让思想进一步的抽象,写这篇博客的时候并未学完整本书...

【LINQ技术】扩展特性和LINQ操作符

LINQ特有的编程结构 LINQ就像是嵌入到C#中的强类型查询语言,尽管和SQL查询很像,但语法却并不相同,甚至还有截然相反的一面。 LINQ是在.NET发展到3.5版的时候被引进的,C#和VB语言都为此做了...

2015/09/08 21:48
20
【SICP归纳】1 过程和代换模型

《计算机程序的构造和解释》这本书的目标并不是讲解一门编程语言的语法等,它是一种方法。不是在向你陈述知识,而是在教你如何做到想要做的东西。它是一个过程,一个精神。这些引导过程的东西...

【Scheme归纳】3 比较do, let, loop

对象的比较 eq? 这个函数用来比较2个对象的地址,如果相同的话就返回#t。在Scheme中真用#t表示,假则用#f。 例如,(eq? str str)返回#t,因为str本身的地址的是一样的,但是”scheme”和”s...

没有更多内容

加载失败,请刷新页面