# 123: トップレベル束縛は defaulting されるはずでは [↑up](bunny_notes) - issued: 2021-10-30 - 分類: D 要調査 - status: Open ## 概要 [117](bissue117) の調査中に気づいた。 $$
{
c1 = 1
c2 = 2
main = print (c1 /c2)
$$}

上記において c1, c2 の型推論結果は Double になってほしいのだけど、Num t => t のまま。

tiProgram の出口で defaultSubst 適用しているつもりだったのは、意味なかったのか。
意味ないんなら、一旦外してしまおう(どっちみち、DictPass における defaulting は必要そうだし)

$$
{
@@ -641,9 +641,9 @@ tiProgram ce as bgs cont = runTI cont $
                            do (ps, as') <- tiSeq tiBindGroup ce as bgs
                               s         <- getSubst
                               rs        <- reduce ce (apply s ps)
-                              s'        <- defaultSubst ce [] rs
+                              -- s'        <- defaultSubst ce [] rs
                               as''      <- getAssump
-                              return (apply2As (s'@@s) (Map.union as' as''))
+                              return (apply2As s (Map.union as' as''))
$$}

これでいいなら、上のコメントアウト行は消しちゃうべし。

TI モナドに defaultSubst を保持してどうこうしようとしてたこと自体が、企画だおれだったのかも?(オリジナル Typing の TI モナドにないんだったら、やめちゃおう)