nobsun
というか、エラーメッセージが理解できないでいます。`Could no deduce: If (x == x) t ('Var x) ~ t` なぜなんでしょう?
```src/Gmachine/AExprLet.hs:245:24: error:
• Could not deduce: If (x == x) t ('Var x) ~ t
from the context: s ~ 'Var x1
bound by a pattern with constructor:
SVar :: forall (x :: Name). Sing x -> Sing ('Var x),
in a case alternative
at src/Gmachine/AExprLet.hs:244:5-11
or from: x1 ~ x
bound by a pattern with constructor:
Refl :: forall {k} (a :: k). a :~: a,
in a case alternative
at src/Gmachine/AExprLet.hs:245:16-19
Expected: Sing (Substitute s x t)
Actual: Sing t
't' is a rigid type variable bound by
the type signature for:
saSubstitute :: forall (s :: AExpr) (x :: Name) (t :: AExpr).
Sing s -> Sing x -> Sing t -> Sing (Substitute s x t)
at src/Gmachine/AExprLet.hs:239:1-101
• In the expression: st
In a case alternative: Proved Refl -> st
In the expression:
case sx %~ sy of
Proved Refl -> st
Disproved _ -> ss
• Relevant bindings include
st :: Sing t (bound at src/Gmachine/AExprLet.hs:240:20)
sx :: Sing x (bound at src/Gmachine/AExprLet.hs:240:17)
saSubstitute :: Sing s
-> Sing x -> Sing t -> Sing (Substitute s x t)
(bound at src/Gmachine/AExprLet.hs:240:1)
|
245 | Proved Refl -> st
| ^^```