可變列表
除了普通數(shù)據(jù)對(duì)象可以使用賦值操作外尸执,序?qū)σ灿邢鄳?yīng)的賦值操作程式,分別是 set-car!
和 set-cdr!
壁熄,能夠?qū)π驅(qū)Φ?car
對(duì)應(yīng)值和 cdr
對(duì)應(yīng)值進(jìn)行修改。但是序?qū)?shí)現(xiàn)方式導(dǎo)致會(huì)存在序?qū)蚕淼那闆r,對(duì)某個(gè)序?qū)M(jìn)行賦值操作將影響共享使用此序?qū)Φ钠渌麑?duì)象,所以對(duì)序?qū)M(jìn)行賦值操作時(shí)需要特別小心。
比如下列程式
(define x (list 'a 'b))
(define z1 (cons x x))
其內(nèi)部鏈接結(jié)構(gòu)如下圖
所以只要對(duì) x 的元素進(jìn)行賦值操作 z1 的 car
值和 cdr
值都將受到影響
在擁有了序?qū)x值操作后,序?qū)Φ膽?yīng)用將得到很大擴(kuò)展凫海,比如用于實(shí)現(xiàn)隊(duì)列、表等數(shù)據(jù)結(jié)構(gòu)男娄。
事件驅(qū)動(dòng)模擬
事件驅(qū)動(dòng)模擬是以行為(或者事件)在整個(gè)系統(tǒng)中的傳播進(jìn)行計(jì)算的方式行贪。比如數(shù)字電路中可以通過線路信號(hào)變動(dòng)事件的傳播計(jì)算整個(gè)數(shù)字電路的輸出信號(hào);還有在多變量參與的等式中模闲,可以通過變量間的連接器數(shù)值變動(dòng)事件的傳播計(jì)算整個(gè)等式的某個(gè)變量建瘫,通過這種方式可以創(chuàng)建非定向的計(jì)算程序(也就是不固定計(jì)算某個(gè)變量,而是已知其他變量的情況下計(jì)算任意未知變量)尸折。
具體內(nèi)容可以查看 數(shù)字電路模擬器和約束的傳播啰脚。