Scheme 为什么使用对的过程表示?

问题描述 投票:0回答:1

我正在阅读 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来说更高效呢?

我学过计算机架构。欢迎任何基于汇编语言的答案。

performance scheme lisp sicp
1个回答
0
投票

这与两件事有关:

    表现力
  1. 。 一旦你拥有了一流的程序,就会发现它们可以用来实现各种其他的事情。 如果需要,您可以使用它们来实现对。 您可能会开始想知道:如果您想的话,有什么是您不能使用它们实现的吗?
  2. 抽象
  3. 。 SICP 该部分的标题是“数据抽象简介”,它指出重要的是某些东西的接口,而不是它的实现方式。 只要接口保持不变,实现可能就不那么重要了。
  4. (第一点问题的答案是“否”。)

© www.soinside.com 2019 - 2024. All rights reserved.