問題タブ [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 - 製品に制約が成り立つことから、製品の構成要素に制約が成り立つことを証明する
C
1 つの型とタプルのインスタンスを持つクラスがあります。
制約をキャプチャするための通常のDict
GADT の使用
C a
から証明できC (a, b)
ますか?
fstDict Dict = Dict
十分ではなく、他の可能性はほとんどないため、すぐに答えは「いいえ」だと思います。C
製品の構成要素の拘束を製品の拘束から回復できるように変更する方法はありますか?
私はおそらく間違って、最も密接に関連する質問とDict
同じことを達成しようとしていますが、カテゴリの一方または両方の端からを要求する余裕があります。
haskell - HList と DataKinds、kind 昇格不可
大量の GHC 拡張機能を使用するこのコード スニペットがあります。
GHC は次のように訴えています。
HList
種類を昇格できないのはなぜですか? GHC7.8.2
とを使用しても同じエラーが発生します7.11
。
もちろん、ビルトインを使用しても'[]
問題なく動作します。
実際には追加がサポートされており、次のようになっているため、HList
代わりに自分のものを使用したいと思います。'[]
HList
EDIT:主な目標は、GHCに推論させることです
書けるように
型レベルのリストを追加するための明示的な表現を追加することが、これを達成するのに役立つことを願っていました。GHCに上記のことを納得させる別の方法はありますか?
haskell - 現物署名の制約とは
を検査すると、次kind
のMaybe
ようになります。
さて、Monad
私がこれを得る種類を調べると:
そこには何がConstraint
あり、なぜそれが必要なのですか? なぜこれだけではないの* -> *
ですか?
haskell - 制約の種類はどこで定義されていますか?
私は GHC の内部に精通していませんが、ConstraintKinds についていくつか質問があります。
そこから言ってGHC.Exts
いる
Constraint
一種の一種であるため、誤解を招く可能性がありますBOX
。これは最初の質問につながります: 種類をインポートおよびエクスポートできますか? それはどのように機能しますか?
私が完全にオフになっている場合は、この次の部分で私を修正してください. さまざまなインポートを試し、ハックのソースをちらりと見てみると、私の推測では、GHC.Exts
インポート元Constraint
はGHC.Base
であり、次に、インポート元はGHC.Prim
です。しかし、それが定義されている場所がわかりませんGHC.Prim
か?
haskell - 非常に単純な例で説明された ConstraintKinds
haskell - Haskell で制約付きの存在を引数関数として受け取る
以下を実行できる関数を定義するために、いくつかの GHC 拡張機能で遊んでいます。
myFunc
は、 の署名で完全にポリモーフィックである必要がありshow
ます。a
b
Show
GHC拡張機能RankNTypes
, ConstraintKinds
,を使った私の試みは次のKindSignatures
とおりです:
私の主な目的は、これらの拡張機能がどのように機能するかを理解することです。k
しかし、私の目には、 somea
とを満たす制約があり、満たす任意の型を取り、特定の を返すことができるb
関数もあるとGHCに伝えているように見えます。今、これらの条件下で、関数を適用したいタプルを取得する(forall c. k c => c -> d)
c
k
d
a
b
(d,d)
GHC が不平を言う方法は次のとおりです。
私は何が欠けていますか?