061: 辞書渡しの条件確認、みなおし

↑up

概要

060 の対処において、元々引数をとらない Num t => t 型の項にも辞書渡しをするよう DictPass を修正したが、元の条件がアドホックで疑わしい。

tcExpr e@(Var (TermVar n (qv :=> t'))) qt -- why ignore qs?
  | null qv || isArg n {- todo:too suspicious! -} = return e
  | otherwise = findApplyDict e (qv :=> t') qt
  where isTVar x@(TVar _) y = True
        isTVar x y          = False
        notFunTy (TAp (TAp (TCon (Tycon "(->)" _)) _) _) = False
        notFunTy _                                       = True
        isArg ('_':_) = True
        isArg _       = False
...

調査して、シンプルにしたい。