美文网首页
疯狂的摘抄 —— The Little Schemer

疯狂的摘抄 —— The Little Schemer

作者: 禁卫君 | 来源:发表于2020-05-17 22:31 被阅读0次

    启迪

    Scheme 五法 :
    1. car之法则 : 经典元件 car 仅定义为针对非空列表。
    2. cdr之法则 : 经典元件 cdr 仅定义为针对非空列表。任意非空列表的 cdr 总是另一个列表。
    3. cons 之法则 : 经典元件 cons 需要两个参数。第二个参数必须是一个列表。结果是一个列表。
    4. null? 之法则 : 经典元件仅定义为针对列表。
    5. eq? 之法则 : 基本元件 eq? 需要两个参数。每个参数都必须是一个非数字的原子。

    Scheme 十诫 :
    1. (预备式)当表述任意函数时,总是将询问 null? 作为诸问题之首。
        (终极式)当对一个原子列表 lat 进行递归调用时,询问两个有关 lat 的问题: (null? lat) 和 else。
                          当对一个数字进行递归调用时,询问两个有关 n 的问题: (zero? n) 和 else。
      当对一个 S- 表达式列表 l 进行递归调用时,询问三个有关 l 的问题:(null? lat)、(atom? (car l))、else.
    2. 使用 cons 来构建列表。
    3. 构建一个列表的时候,描述第一个典型元素,之后 cons 该元素到一般性递归上。
    4. 在递归时总是改变至少一个参数。该参数必须向着不断接近结束条件而改变。改变的参数必须在结束条件中得以测试:当使用 cdr 时,用 null? 测试是否结束;当使用 sub1 时,用 zero? 测试是否结束。
    5. 当用 + 构建一个值时,总是使用 0 作为结束代码行的值,因为加上0不会改变加法的值。
        当用 * 构建一个值时,总是使用1作为结束代码行的值,因为乘以1不会改变乘法的值。
        当用 cons 构建一个值时,总是考虑把 () 作为结束代码行的值。
    6. 简化工作只能在功能正确之后开展。
    7. 对具有相同性质的子部件进行递归调用:列表的子列表;算术表达式的子表达式。
    8. 使用辅助函数来抽象表示方式。

    相关文章

      网友评论

          本文标题:疯狂的摘抄 —— The Little Schemer

          本文链接:https://www.haomeiwen.com/subject/hshsohtx.html