kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

Reasoned Schemer (45) 10章 ext-s

(ext-s x v s)はsubstitution sにassociation `(,x . ,v)
追加したものを返す
ただし循環参照ができるようなassociationは追加できず#fを返す

循環参照かどうか判定するのは(occurs? x v s)
まずvsでsubstitutionしておいて
vがvarでvxが同じものなら真
vがpairならvのcarにxがoccurしてるかcdrにoccurしてれば真
そうでなければ偽

これだと(occurs? x x `((,x e)))が真になって
(ext-s x x `((,x e)))を評価すると `(,x . ,x)というassociationが
追加されてしまうんだけどこれはいいんだろうか