可变列表
除了普通数据对象可以使用赋值操作外,序对也有相应的赋值操作程式,分别是 set-car! 和 set-cdr! ,能够对序对的 car 对应值和 cdr 对应值进行修改。但是序对实现方式导致会存在序对共享的情况,对某个序对进行赋值操作将影响共享使用此序对的其他对象,所以对序对进行赋值操作时需要特别小心。
比如下列程式
(define x (list 'a 'b))
(define z1 (cons x x))
其内部链接结构如下图
The list z1 formed by (cons x x)
所以只要对 x 的元素进行赋值操作 z1 的 car 值和 cdr 值都将受到影响
在拥有了序对赋值操作后,序对的应用将得到很大扩展,比如用于实现队列、表等数据结构。
事件驱动模拟
事件驱动模拟是以行为(或者事件)在整个系统中的传播进行计算的方式。比如数字电路中可以通过线路信号变动事件的传播计算整个数字电路的输出信号;还有在多变量参与的等式中,可以通过变量间的连接器数值变动事件的传播计算整个等式的某个变量,通过这种方式可以创建非定向的计算程序(也就是不固定计算某个变量,而是已知其他变量的情况下计算任意未知变量)。








网友评论