# 2016 年 11 月 ## 2016-11-21 ### [Bunny] きょうの進捗 昨日、tcExpr をいちおう Case 式に対応させた${「一応」というのは、scrutinee に対する type-check をしてないので。}ら、 ${illegal type for dictionary: TVar (Tyvar ".v129" Star)} といってエラーするようになってた件。 なんか、Core 言語の時点で、あちこちに Tyvar が残っているのはおかしいはずで、 型推論が終わった時点で残っている型変数は、TGen になってるべき(つまり、型は quantifyされているべき)なんじゃないか。 というわけで、あちこちに、えい、えいっと quantify をいれてみた。 いかにも対症療法的でアレなんだけど、まずは動かすぞーという。あとできれいにしたい。 んで、そうこうしていたら、「次の」問題に出くわした。 $$
{
$ ./test-compile.sh testcases/tqd.hs
(中略)
("Main.l1.l0.l0.l0.OK",[],Var (TermVar "Prelude.<=" ([IsIn "Prelude.Ord" (TGen 0)] :=> TAp (TAp (TCon (Tycon "(->)" (Kfun Star (
Kfun Star Star)))) (TGen 0)) (TAp (TAp (TCon (Tycon "(->)" (Kfun Star (Kfun Star Star)))) (TGen 0)) (TCon (Tycon "Bool" Star))))
),[IsIn "Prelude.Ord" (TGen 0)],TAp (TAp (TCon (Tycon "(->)" (Kfun Star (Kfun Star Star)))) (TGen 0)) (TAp (TAp (TCon (Tycon "(-
>)" (Kfun Star (Kfun Star Star)))) (TGen 0)) (TCon (Tycon "Bool" Star))),TAp (TAp (TCon (Tycon "(->)" (Kfun Star (Kfun Star Star
)))) (TGen 0)) (TAp (TAp (TCon (Tycon "(->)" (Kfun Star (Kfun Star Star)))) (TGen 0)) (TCon (Tycon "Bool" Star))),0,[],Nothing,F
alse)
bunnyc.exe: dictionary not found: 0
$$}

これ、${OK} というのは、リスト内包式を Let 式に変換したときに生じる変数なんですが、
そいつの型に qualifier がついていないので単相にみえるんだけど、その中で ${(<=) :: Ord t0 => t0 -> t0 -> Bool}
が呼ばれているのであかんやろ、といってる。

その苦情はごもっともで、${OK}の型がおかしい。そういや、その辺さぼったような…。

今日は、ここまで。

## 2016-11-16
### [Bunny] Fixity Resolution 動いてなかった?問題。

${(++) (x:xs) ys = x : (xs ++ ys)} の最後の括弧をとると期待通り動かない(無限ループする)問題があって、
Fixity Resolution 動いてないのか? まったくテストしてなかったんだっけ?と思っていたのですが。

で、考えてみると、${:} の fixity 宣言しわすれていたし、そういえば、 ${:} の qualified name は
${Prim.:} だったねということで対処し、解決。

test9a は pass したので、check 用テストに加えました。(sample104)
いやぁ、${make check} できるようにしてから、だいぶ効率があがった気がする。

今日のは、お昼休みにパッと直してコミット。
つぎあたり、tcExpr を Case 式に対応させたいね。


## 2016-11-14

[ひとり Advent Calendar 2016-11-14](hac20161114) 

## 2016-11-11

[ひとり Advent Calendar 2016-11-11](hac20161111)