我正在阅读 SICP。它在2.1.3中说:
也就是说,操作满足条件,对于任何对象 x 和 y,如果 z 是 (cons x y),则 (car z) 是 x,(cdr z) 是 y。 ...以下是定义:
(define (cons x y) (define (dispatch m) (cond ((= m 0) x) ((= m 1) y) (else (error "Argument not 0 or 1 -- CONS" m)))) dispatch) (define (car z) (z 0)) (define (cdr z) (z 1))
...
展示对的程序表示的目的不是 我们的语言是这样工作的(Scheme 和一般的 Lisp 系统, 直接实现对,出于效率原因)但它可以工作 这边走。程序表示虽然晦涩难懂,但却是表示对的完全充分的方式,因为它满足“对”需要满足的“唯一条件”。
在C语言中,我们可以使用数组来实现“pair”,在汇编代码中,是通过分配一个连续的内存地址来存储数据来实现的。我们可以检查数组大小以确保它是一对。
那为什么“程序表示”对于Scheme来说更高效呢?
我学过计算机架构。欢迎任何基于汇编语言的答案。
这与两件事有关: