問題タブ [constraint-kinds]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - 制約を反転する型関数を作成できますか?
Show のような制約を受け取り、RHS をShow のインスタンスではない型に制約する型関数を返す型関数を作成することは可能ですか?
署名は次のようなものになります
haskell - この制約をどのように表現できますか?
Constraint
kind の on 型を表現したいと思いk -> k -> Type
ます。これは英語で次のように言えます。
forall
s
、x
x'
、y
およびy'
whereCoercible x x'
およびCoercible y y'
、Coercible (s x y) (s x' y')
または、より平易な英語で:
s
2 つのパラメーターが強制可能な場合、常に強制可能な型。
後者はすでに Haskell に興味をそそられるほど近いように見えます。
ただし、これは機能しません。ghc はCoercible (s x y) (s x' y')
型になりたいのですが、Constraint
(ConstraintKinds
でありQuantifiedConstraints
、オンになっています)。
何が起こっているのか完全には理解できませんが、ghc は aConstraint
の右側にいるのが好きではないことが分かり=>
ますtype
。Constraint
種類で型エイリアスを作成でき、 でtype
エイリアスを作成できるので=>
、問題ありません。
問題は何ですか?この制約をghcが受け入れる方法で表現するにはどうすればよいですか?