ブラックホールに束縛されている変数

R6RSのAppendix A. Formal semanticsを読みました。
R5RSの形式的意味論は日本語で呼んでもさっぱり分からなかったけど、
R6RSの形式的意味論は英語でも(*)結構分かった気分になれました。
すこし面白かったのがletrecの説明。

… but it initializes both ordinary variables, and variables that are current bound to the black hole(bh).
しかし、それは通常の変数と現在ブラックホール(bh)に束縛されている変数の両方を初期化する

ブラックホールに束縛されている変数ですよ。ブラックホール。
まあ、天文学のブラックホールとは一切関係ないと思いますが。
(変数に割り当てたロケーションにとりあえず放り込んでおく値です)
あと、気になったのがリストが循環しているか確かめるメタな述語(関係?)

b ∈ 2pp×val×(sf …)
b [[ pp1, pp2, (sf1 … (pp2 (cons v1 v2)) sf2 …) ]] if pp1 = v2
b [[ pp1, pp2, (sf1 … (pp2 (cons v1 v2)) sf2 …) ]]
  if b [[ pp1, v2, (sf1 … (pp2 (cons v1 v2)) sf2 …) ]] and pp1 ≠ v2
(画像版はこちら)

リストに循環部分がないか、これをリストの全ての要素に適用して確かめてるんですが、
これって、リストの途中に循環構造があった場合一生終わらない気がするんですが、いいんでしょうか。

(*)いろんな文章に対して「英語で読んだ方が分かりやすいよ」とかいう言葉を聞きますが、
英語がろくにできない人にとってはどんな文章でも日本語版と英語版があれば、
どう考えても日本語版の方が分かりやすい…そういっても過言ではないかもしれません
いえ、ずばり過言ではないでしょう

Leave a Reply