Ell*_*tus 2 scheme functional-programming reference-counting
我可以在Scheme中创建一个循环数据结构,如下所示:
(define my-pair (cons 1 1))
(set-car! my-pair my-pair)
Run Code Online (Sandbox Code Playgroud)
是否可以在Scheme中创建循环数据结构而不使用变异?(我正准备关于引用计数限制的讲座.)
你可以创建一个带闭包的惰性列表:
; The infinite list (1 1 1 ...
(define ones
(letrec ((x (cons 1 (lambda () x))))
x))
> ones
'(1 . #<procedure>)
> ((cdr ones))
'(1 . #<procedure>)
Run Code Online (Sandbox Code Playgroud)
身份检查验证循环度:
> (eq? ones ((cdr ones)))
#t
Run Code Online (Sandbox Code Playgroud)