新千葉 ガーベージ・コレクション

FPGA マガジンやインターフェースで書けなかったこと等をちょぼちょぼ書いてます。@ryos36

Chichen Scheme で再帰的な表示を抑制したいができないのでクローじゃ使う

自己参照している List を print すると(displayでも princ でもいい)無限ループに陥る。common lisp なら

(setf *print-circle* t)

だけど、Chicken Scheme だとどうしたらよいかわからない。仕方がないので遅延評価的なことをさせることにした。自己参照しているのを lambda でラッピングしてそれ以上表示させない。

(define (wrapper env)
 (lambda () env))

名称も wrapper じゃなくてなんとか get なんとかにしておけばわかりやすい。これで表示ができる。あと Chicken Schemecommon lisp みたいな :id があることがわかった。#:id あるいは id: 。なんで逆なんだよ。(eq? #:id id:) は #t。