問題タブ [data-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.

0 投票する
2 に答える
112 参照

haskell - (DataKinds を介して) * -> A に持ち上げるコンストラクター

次のようなADTが与えられた場合

拡張により、DataKindsそれを種類と型/型コンストラクターに持ち上げることができます

K型コンストラクターにリフトするコンストラクターを追加する方法はありますか

?

0 投票する
1 に答える
119 参照

haskell - Nat 種類に対するカスタム型ファミリの定義

kind の型に対する新しい計算をどのように定義しますGHC.TypeLits.Natか? 型ファミリーを定義できることを望んでいます

そのようWIDTH 0 ~ 0WIDTH (n+1) ~ log2 n

0 投票する
1 に答える
99 参照

haskell - DataKinds を使用せずに値を他の値に依存させるにはどうすればよいですか?

ユニバース タイプとワーカー タイプがあります。労働者は宇宙を変えることができます。私が達成したいのは、そのユニバースのワーカーのみがユニバースを変更できるようにすることです (将来または過去のワーカーではありません)。

私が達成できる最高のものはこれです:

に変更w2 = head $ _allWorkers u2するw2 = head $ _allWorkers uと、必要なコンパイルエラーが発生します。

私があまり気に入らないのは、各ユニバースにバージョンがアタッチされており、手動でインクリメントする必要があることです。明示的なバージョン管理を必要としない別の方法でこれを行うことはできますか? 型チェッカーが知っているdoSomething関数が a を返すようにするようなものは、とは異なります。Universe otherTypeotherTypet

御時間ありがとうございます。

0 投票する
3 に答える
924 参照

haskell - DataKinds と型クラスのインスタンス

次の例は、私の実際の問題を煮詰めたものです。DataKinds の制約付き存在型から情報を取得する とどこか似ているようですが、求めていた答えを得ることができませんでした。

Kタイプとを持つ有限の昇格された DataKindAと、種類 * のタイプを持つ項を生成するBための poly-kindedProxyデータ型があるとします。

ここで、 が kind のShowすべてのタイプの -instancesを書きたいと思います。これは正確に 2 つです。Proxy aaK

しかし、Show-instance を使用するには、種類が次のように制限されている場合でも、明示的にコンテキストを提供する必要がありますK

私の目標は、型クラスの制約を取り除くことです。これは重要ではないように思えるかもしれませんが、私の実際のアプリケーションでは、これは大きな意味を持ちます。

次のように、単一のより一般的なインスタンスを定義することもできますShow

Aこれにより、実際には制約を削除できますが、新しい問題は と の 2 つのタイプを区別することBです。

それで、私のケーキを食べて、それも食べる方法はありますか? つまり、型で型クラス制約を提供する必要はなくtest(kind アノテーションは問題ありません)、2 つの異なるshow実装を保持している (たとえば、何らかの方法で型を区別することによって) ということですか?

実際には、型情報だけを持っているコンテキストで、それぞれの型 ( AB) を特定の値 (ここでは"A"、 ) に単純に関連付けることができれば、型クラス全体を削除しても問題ありません。"B"しかし、これを行う方法がわかりません。

提供された洞察に非常に感謝します。

0 投票する
2 に答える
133 参照

haskell - :k [False] が GHCI でエラーになるのはなぜですか?

以下のセッションの最後に受け取ったエラーについて混乱しています。

エラーの理由


今後の実験により、次のことが明らかになります。

[Int]値が存在する可能性があるため、親切ですが、親切*であることにも意味があり[*]ます。


もう少しデータポイント:

0 投票する
1 に答える
118 参照

haskell - GADT を含むベクター

ExistentialQuantification、GADT、KindSignature などについて、できる限りのことを学んでいます。そのために、すべてをよりよく理解するのに役立つ小さなプログラムを考え出そうとしています。

今、私はこの小さなスニペットを持っています (これは実際にコンパイルされるので、自分で試すことができます。ベクターmtlパッケージが必要です)。それを機能させるために

ご覧のとおり、MenuItemReferences の Vector を取得しようとしています...現在持っているものでエラーが発生するため、何が間違っているのですか:

エラーの背後にある理由と、私が達成しようとしていることに(可能な場合)どのようにアプローチできるかを誰かが説明できますか.