Concurrent Clean : CleanJ : buildとbuildhとbuild_r
いまさらbuildとbuildhの違いが分かった。
buildもbuildhもスタック上のデータをargumentsとして新しいnodeを作成する命令なのだが、buildはスタック上のデータをそのままにして新しいnodeを生成するのに対し、buildhはスタック上のデータをpopして新しいnodeを生成する。
updateとupdatepopの違いと同じ。buildとbuildpopという名前にしておいてくれればもっと分かりやすかったのに!
-
-
- -
-
build_uもpopするタイプらしい。
-
-
- -
-
あ、違った。
buildもbuild_uも、第一引数が"_"であったときは、buildhのように振舞うのだった。
そういえば、CodeGeneratorを読んだときに、そういう動きをしていた。
-
-
- -
-
あれ、また分からなくなってきた。
-
-
- -
-
上の話はどうも違っていたみたい。
build, buildh, build_uはすべてpopするタイプで、build_rだけpopしないタイプなのか?
-
-
- -
-
整理します。
- popする
- build, buildh, build_u
- popしない
- buildI_b, buildC_b, buildR_b, buildB_b, build_r
-
-
- -
-
fillにも同じことがあります。
- popする
- fill, fillh (, fill_u)
- popしない
- fillB_b, fillC_b, fillI_b, fillR_b, fill_a, fillcaf, fill_r
ただし、fill_uは未確認です。