117 の調査中に気づいた。
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 モナドにないんだったら、やめちゃおう)