在讲座4a模式匹配什么是冒号?

时间:2014-08-18 18:44:02

标签: scheme

我刚刚开始观看讲座4a sicp,我完全迷失了。似乎从第3讲到第4讲的难度增加了。这些讲座在youtube上是否与当前的麻省理工学院课程无关? http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/lecture-notes/

https://www.youtube.com/watch?v=amf5lTZ0UTc&index=7&list=PL8FE88AA54363BC46

有人可以向我解释他正在做的一般过程是什么吗?我还没有读过这本书,只是在youtube上观看视频。我是否应该停止观看视频并阅读本书并沿途进行每一次练习?

的(:x1)和(?x2)是什么?
(define deriv-rules
    '(
        ( (dd (?c c) (? v))         0)
        ( (dd (?v v) (? v))         1)
        ( (dd (?v u) (? v))         0)

        ; Derivative of (+ x1 x2) in respect to v
        ( (dd (+ (? x1) (? x2)) (? v))
            (+
                (dd (: x1) (: v))
                (dd (: x2) (: v))
            )
        )

        ; Derivative of (* x1 x2) in respect to v
        ( (dd (* (? x1) (? x2)) (? v))
            (+
                (* (: x1) (dd (: x2) (: v)))
                (* (dd (: x1) (: v)) (: x2))
            )
        )

        ; Derivative of x^(const) in respect to v
        ( (dd (** (? x) (?c n)) (? v))
            (*
                (* (: n) (** (: x) (: (- n 1))))
                (dd (: x) (: v))
            )
        )
    )
)

1 个答案:

答案 0 :(得分:0)

在您发布的最后一个链接中,视频的11:37解释了冒号。问号稍早解释一下。我们来看看这段代码:

(define deriv-rules
    '(
        ( (dd (?c c) (? v))         0)                ; 1
        ( (dd (?v v) (? v))         1)                ; 2
        ( (dd (?v u) (? v))         0)                ; 3

        ; Derivative of (+ x1 x2) in respect to v
        ( (dd (+ (? x1) (? x2)) (? v))                ; 4
            (+
                (dd (: x1) (: v))
                (dd (: x2) (: v))
            )
        )
…

deriv-rules是一个列表列表,每个列表都为(pattern derivative)。例如,规则1,2和3分别为:

  • 常量 c 相对于任何事物的衍生物(称之为 v )为0。
  • 任何变量 v 相对于 v 的衍生物为1。
  • 任何变量 u 对任何事物的衍生物(称之为 v )为0。

这些中没有使用冒号,因为这些衍生物都不需要实例化。但是,规则4表示,对于任何 v ,总和 x 1 + x 2 的导数是 x 1 的导数之和与 v x 2 的导数关于 v (: …)表示法提供了一种引用变量的值的方法。

相关问题