Skip to content

练习 2.4 疑问 #60

@bfjei2825401

Description

@bfjei2825401

大佬的答案:

(car (cons 1 2))

(car (lambda (m) (m 1 2)))          ; 展开 cons

((lambda (z) (z (lambda (p q) p)))  ; 展开 car ,代换 z
    (lambda (m) (m 1 2)))

((lambda (m) (m 1 2))               ; 代换 m
    (lambda (p q) p))

((lambda (p q) p)                   ; 代换 p
    1 2)

1

第二步 展开 car,代换 z 不是很理解,为什么把 z 变成了 lambda 表达式,而不是把 z 看作一个过程,随后是把过程 (lambda (p q) p)) 当做过程 z 的参数?

下面是我的理解:

(car (cons 1 2))

(car (lambda (m) (m 1 2)))          ; 展开 cons

((lambda (m) (m 1 2)) (lambda (p q) p)))  ; 展开 car

((lambda (p q) p)                   ; 过程参数代入 m
    1 2)

1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions