海野秀之(うんのひでゆき)の外部記憶
Twitter (twilog) / RSS / アンテナ / ぶくま
https://github.com/unnohideyuki/Tiger-in-Haskell/tree/master/chap7
今日は(あ、もう日付変わってる!)、帰ってくるの遅くなってしまって、痛恨。
static link の扱いあたりを追加してみたけど、動作がいろいろおかしい。
$ ./driver.exe < ../testcases/test6.tig
(UNIT,
[Proc {body = EXP (ESEQ (EXP (CONST 0)) (CALL (NAME "L0_do_nothing1") [TEMP 0,CONST 0,NAME "L3"])),
frame = Frame {name = "main", formals = [InFrame (-3)], locals = [], fp = 0}},
Proc {body = EXP (CALL (NAME "L0_do_nothing1") [TEMP 2,MEM (BINOP PLUS (CONST (-3)) (TEMP 2)),NAME "L2"]),
frame = Frame {name = "L1_do_nothing2", formals = [InFrame (-3),InReg 2], locals = [], fp = 2}},
Str "L2" "str",
Proc {body = EXP (CALL (NAME "L1_do_nothing2") [TEMP 1,BINOP PLUS (MEM (BINOPPLUS (CONST (-3)) (TEMP 1))) (CONST 1)]),
frame = Frame {name = "L0_do_nothing1", formals = [InFrame (-3),InReg 2,InReg 1], locals = [], fp = 1}}
])
落ちついてコードを追ってみよう。
そして、いまなお文字列比較まわりは未実装。
https://www.google.com/fonts/specimen/Noto+Sans
"No 豆腐" で Noto だったのか。(Adobe からは Source Han Sans)
Arrows Me 上でついった見てると、よく見かける気がする、豆腐。
(フォントなに選んでたかな?)
つかれてんのかな、「めばちこ」っぽい。めやにが…
MHonARC の mhmimetypes.pl に xlsx, pptx, docx に関するものがなかったので、足した。
どこかにメモっておかねば。(これは仕事の話)
やっぱ、よく考えずにつぶやくの、よくなかった。(知ってた)
(F.InFrame (-3 - n) : acc, temp)
ここの temp は t じゃないとだめ。このせいで、かならず formals の最初(static_link はいつも escapes)で temp が先祖がえりしてた。
平気で変数を shadow してる命名がよくない気がした。
Str "L3" はどこへ行った問題が未だ。
frame の formals には static_link を積んだのに、それを用いる側でそれを考慮できてない問題もまだ。
-fwarn-name-shadowing なのかな。-Wall つけるか。最初は大変そう。いまのうち、ではあるか。
http://www.kotha.net/ghcguide_ja/7.0.4/options-sanity.html
frame の formals には static_link を積んだのに、それを用いる側でそれを考慮できてない問題
わかった。
(_:as) = TL.acc_formals lev
こう直して、static_link の access を捨てればいい。(なんかイマイチの方法ではあるが)
気付いている問題は、あといっこか。> Str "L3" どこ?
週4回、夜だけのプログラミングでは、なかなか進まないけど、自分が書いたコードがわかんなくなるほど間はあかないので、
なんとか少しずつだが進めることができる。
「遅い」と「進まない」はチガウのが実感できて、ちょっとうれしい。
今日はコーディングしない日なので、気づいた直し方については、つぶやくだけ。明日やる。