制約を追跡する手法
シナリオは次のとおりです。型シグネチャを使用していくつかのコードを記述しましたが、GHCは一部のxとについてx〜yを推定できませんでしたy。通常、GHCに骨を投げて、関数の制約に同型を単に追加できますが、これはいくつかの理由で悪い考えです。 コードの理解を強調するものではありません。 最終的に5つの制約で十分な場合があります(たとえば、5がもう1つの特定の制約によって暗示されている場合) 何か間違ったことをしたり、GHCが役に立たなかったりすると、偽の制約になる可能性があります。 ケース3との戦いに数時間費やしたところです。私はで遊んでおりsyntactic-2.0、でshare定義されているバージョンと同様に、ドメインに依存しないバージョンのを定義しようとしていましたNanoFeldspar.hs。 私はこれを持っていました: {-# LANGUAGE GADTs, FlexibleContexts, TypeOperators #-} import Data.Syntactic -- Based on NanoFeldspar.hs data Let a where Let :: Let (a :-> (a -> b) :-> Full b) share :: (Let :<: sup, Domain a ~ sup, Domain b ~ sup, SyntacticN (a -> (a …