(caadr exp) 在赋值变量中
(caadr exp) in assignment-variable
我正在阅读 4.1.2 Representing Expressions 的 SICP,
定义了definition-variable
.
(define (definition? exp)
(tagged-list? exp 'define))
(define (definition-variable exp)
(if (symbol? (cadr exp))
(cadr exp)
(caadr exp))) ;;
参考条件
(if (symbol? (cadr exp))
(cadr exp)
(caadr exp))) ;;
我不太确定 (caadr exp)
返回了什么?是 null 还是 '()
变量大小写
(define ⟨var⟩ ⟨value⟩)
(cadr exp)
returns第二个元素作为变量,
但替代程序案例:
(define (⟨var⟩ ⟨param₁⟩ … ⟨paramₙ⟩)
⟨body⟩)
表达式 (caadr exp))) 是 (car (car (cdr x)))
既然cadr是var,那么caadr是null?
在过程案例中,(cadr exp)
不是名称,而是第一个元素是名称的列表。
(cadr exp)
|
v
+-------+
| |
(define (f a b c) body) <--- exp
^
|
(caadr exp)
如果你评价它:
(caadr '(define (⟨var⟩ ⟨param₁⟩ … ⟨paramₙ⟩) ⟨body⟩))
-->
(caar '((⟨var⟩ ⟨param₁⟩ … ⟨paramₙ⟩) ⟨body⟩))
-->
(car '(⟨var⟩ ⟨param₁⟩ … ⟨paramₙ⟩))
-->
⟨var⟩
我正在阅读 4.1.2 Representing Expressions 的 SICP,
定义了definition-variable
.
(define (definition? exp)
(tagged-list? exp 'define))
(define (definition-variable exp)
(if (symbol? (cadr exp))
(cadr exp)
(caadr exp))) ;;
参考条件
(if (symbol? (cadr exp))
(cadr exp)
(caadr exp))) ;;
我不太确定 (caadr exp)
返回了什么?是 null 还是 '()
变量大小写
(define ⟨var⟩ ⟨value⟩)
(cadr exp)
returns第二个元素作为变量,
但替代程序案例:
(define (⟨var⟩ ⟨param₁⟩ … ⟨paramₙ⟩)
⟨body⟩)
表达式 (caadr exp))) 是 (car (car (cdr x)))
既然cadr是var,那么caadr是null?
在过程案例中,(cadr exp)
不是名称,而是第一个元素是名称的列表。
(cadr exp)
|
v
+-------+
| |
(define (f a b c) body) <--- exp
^
|
(caadr exp)
如果你评价它:
(caadr '(define (⟨var⟩ ⟨param₁⟩ … ⟨paramₙ⟩) ⟨body⟩))
-->
(caar '((⟨var⟩ ⟨param₁⟩ … ⟨paramₙ⟩) ⟨body⟩))
-->
(car '(⟨var⟩ ⟨param₁⟩ … ⟨paramₙ⟩))
-->
⟨var⟩