随笔分类 - SICP
scheme入门
摘要:YouTube上看到了一个2004年版的SICP讲解 看完解释器那一个视频后,对解释器中的Eval和Apply有了基本的认识于是想开始直接写一个简单lisp的解释器 我的理解是: Eval是来求表达式的值的; Apply 则是用来求函数值的; 什么是表达式 ? atom 或者 a list of e
阅读全文
摘要:倘若不执行一次proc过程 与该wire 相连的位于 output的那边的wire将可能得到错误的值 打个比方: 1 2 3 | inverter1 | | inverter2 | 已知 wire3 的初值为0 假设wire2初值为0 如果wire2 在连上inverter2 时 不执行一次proc
阅读全文
摘要:简单的定义为 能工作,但这样并没有意义,因为这样定义在处理 fib(n-2)和fib(n-1)时就是普通fib函数了 步数: 在计算fib(n)时 需要fib(n-1)和fib(n-2)而fib(n-1)的值需要fib(n-2)的值,如使用记忆法,则fib(n-2),fib(n-3)已事先存在表中。
阅读全文
摘要:1 (define false #f) 2 (define true #t) 3 4 (define (make-table) 5 (let ((local-table (list '*table*))) 6 7 (define (assoc key records) 8 (cond ((null? records) false) 9 ...
阅读全文
摘要:看了SICP到第三章后,感觉刷起来有点困难,于是去找了一些参考资料先看了几天。 The litter schemer SICP公开课 国内的SICP课程
阅读全文
摘要:这几题的理解花了几天,发现自己是想多了点,然后还有一个原因是理解错误 126-128 的结果为(1 2)不是 (1 (2))
阅读全文
摘要:3.15 对于z1 z1 >[ * ][ * ] | | v v [ * ][ * ] >[ * ][ \ ] | | v v wow b 对于z2 z2 >[ * ][ * ] | | | + >[ * ][ * ] >[ * ][ \ ] | | | | v v | a b | ^ | | +
阅读全文
摘要:x >[ * ] >[ * ] >( ) | | v v a b y >[ * ] >[ * ] >( ) | | v v c d z >[ * ] >[ * ] >[ * ] >[ * ] >( ) | | | | v v v v a b c d z1 + | v x >[ * ] >[ * ]
阅读全文
摘要:这三题主要是对以前的一些过程的分析,把他们放到了环境模型中来考虑 从这三题中我觉得所要理解的就是:环境对象就是一个序对,其代码部分就是由参数和一个过程体组成,其环境部分就是一个指向产生这个lambda 表达式的环境的指针,并对该环境中的一个符号进行约束。每一次对这个lambda表达式求值,都会产生一
阅读全文
摘要:第一次写的: 我尝试用建立列表的方法来做,但是这就导致了不同的账户可以用不同的密码来操作。 同时我写的这个过程还有bug,我用set!去 把一个新过程赋给一个旧过程,但是结果 上,Paul 可以通过 Peter 的密码来操作账户,Peter可以用Paul的来操作。可是,这两个 账户却是独立的,并没有
阅读全文
摘要:1.被注释掉的p 不是一个过程,而是一个值 如果把rand-in-range 放后面会报错 2.也是同样的情况被注释掉的rand过程中 我试图直接把generate做成一个值,但是总是得不到正确的结果, 我想可能是因为,当generate 为数值时,它的数值的取决于rand中的x,而在这里就会 出现
阅读全文
摘要:先跳过了一些,等3.2后再看 开始用完全用Scheme来写 开始用Linux系统
阅读全文
摘要:对于2.69 首先要有清晰的思路,不然就会写出注释掉的那种不明觉厉的东西 1.当leaf-set为空集时返回空集 2.当leaf-set只有一个元素时表示所有元素已经组合成了一棵哈夫曼树 3.不断重复,取出最小的两个权重的叶子或树构成一棵新树(由于make-leaf-set 中有adjoin-set
阅读全文
摘要:1 #lang racket 2 3 ;;;;;;;;;;;;;;;;;;;;2.59 4 (define (element-of-set? x set) 5 (cond ((null? set) false) 6 ((equal? x (car set)) true) 7 (else (element-of-set? x (cdr set))...
阅读全文
摘要:1.这几题进一步强化了按愿望实现函数的方法 2.quoto 和 list 的区别 参考 (1)' 是quoto 的缩写 (2)' 后的内容会原样返回,因为 ' 就是个省略了的单引号 (= '3 3) ->#t (car '(list a b)) ->list (和sicp_2.55同理) (3)li
阅读全文
摘要:" ' " 相当于是单引号,只不过省略了后半引号
阅读全文
摘要:1 ;;;;;;;;;;;;;;;;;2.52 2 (define (corner-split painter n) 3 (if (= n 0) 4 painter 5 (let ((up (up-split painter (- n 1))) 6 (right (right-split painter (- n 1))) 7 ...
阅读全文

浙公网安备 33010602011771号