002: adt-sample3 で bunnyc: renSigDoc $ A.Tycon MyEither

↑up

現象

adt-sample3 をコンパイルすると、 bunnyc: renSigDoc $ A.Tycon MyEither となって失敗する。

調査ログ

2020-04-08 (Wed)

#003 に対処したので、このケースも通るかと思われたが、 #001 と同じ問題にあたって失敗。

$ ./test-compile.sh testcases/adt-sample3.hs 
source file: testcases/adt-sample3.hs
dst dir: /adt-sample3
doCompile ... done.
implicitPrelude ... done.
doCompile ... bunnyc: do not unified in tyapp:
        TAp (TAp (TCon (Tycon "(->)" (Kfun Star (Kfun Star Star)))) (TAp (TAp (TCon (Tycon "Main.MyEither" (Kfun Star (Kfun Star Star)))) (TCon (Tycon "Prelude.Int" Star))) (TCon (Tycon "Prelude.Int" Star)))) (TAp (TCon (Tycon "[]" (Kfun Star Star))) (TCon (Tycon "Prelude.Char" Star)))
        TAp (TAp (TCon (Tycon "(->)" (Kfun Star (Kfun Star Star)))) (TAp (TAp (TCon (Tycon "Main.MyEither" (Kfun Star (Kfun Star Star)))) (TCon (Tycon "Prelude.Integer" Star))) (TVar (Tyvar "b" Star)))) (TVar (Tyvar "a2" Star))
CallStack (from HasCallStack):
  error, called at src/DictPass.hs:148:12 in main:DictPass

同じ問題なので、Int を Integer に変えるなどすると、通る。

後者は、通ってしまうのだが、これは GHC にかけると NG。通ってはいけないのでは。

044 の対処により、adt-sample3.hs は通るようになり、 通ってはいけないと思われた adt-sample3c.hs は cannot resolve ambiguity で (おそらく)正しくエラーするようになった。

adt-sample3c.hs も test/samples に加えておく (sample158)