問題タブ [overlapping-instances]
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 - Haskellの重複するインスタンスとタイプ関数
SQLのようなクエリ最適化をモデル化する次の型クラスがあります。
問題は、最適化された型関数で「競合するファミリインスタンス宣言」というエラーが発生することです。それはなぜですか、どうすれば解決できますか?すべてのケース(かなり多くなる可能性があります)を使い果たすのではなく、「フォールバックインスタンス」があると本当に便利です...
haskell - 重複インスタンス エラー メッセージの解釈のヘルプ
この重複するインスタンスのエラー メッセージに困惑しています。申し訳ありませんが、これは重要なプロジェクトですが、エラーは型シグネチャに対してローカルである必要があります。
まず、 fが特定の型であることを宣言します。
次に、関数を呼び出そうとしますpshow :: PrettyShow a => a -> String
。このエラー メッセージが表示されます。
問題はCompNode Int
グラフではないことです。そのため、最初に一致したインスタンスがトリガーされるべきではないと思います。(2 つ目は実行したいものです。) 実際、引数がグラフであることを必要とする関数を作成すると、
fでそれを呼び出すと、予想される no instance エラー メッセージが表示されます。
事前に感謝します。クラウドソーシングで申し訳ありません。GHC 7.0.4 を使用しています。
haskell - 特にインスタンス処理において、表現力を優先する言語拡張または Haskell の言語の子孫はありますか?
時々、Haskell がインスタンス ヘッドのみに一致するという「機能」に出くわします。つまり、
はどのような型にも一致するようになりました。つまりC
、プログラム内で willの別のインスタンス宣言を書くと、コンテキストのために競合する可能性がない場合でも、エラーになります。時には、克服するのに多くの努力が必要です。この制限を回避するために、何百行ものコードを再構築する必要がありました。a ~ NewDataTyp b
表現力を優先して設計された言語拡張または派生言語 (Curry? Agda?) はありますか? これにより、(a) 型クラスの世界の開放性 (b) 多項式時間型チェックが犠牲になる可能性があります。
編集-- 質問に興味がある人は、このページも興味深いかもしれません: http://www.haskell.org/haskellwiki/Future_of_Haskell
python - クラス間で共通のコンテキストを共有するには?
現在のシナリオ:
コンストラクターですべて共通の引数を取る一連のクラスがありcontext
、すべてのクラスは共通のベースから継承します。
メインでの使用法:
問題:
context
すべてのクラスに暗黙的に提供するトリッキーな方法はありますか?- 共通の基本クラスがありますが、すべてのクラスのコンテキストを設定できる明確な方法がわかりません。
- すべてのクラス インスタンスに共通のコンテキストを維持したいと考えられます。
- ただのランダムな考え - メタクラスは何とか役立つでしょうか?
ばかげているように思えることはわかっていますが、何らかの方法で冗長性を取り除き、何らかの方法でグローバル コンテキストを設定し、オブジェクトに集中できるようにしたいだけです。
何らかの方法を提案してください。
**質問への更新**
これはWebアプリケーションで使用されるため、基本クラスにコンテキストを設定できません。したがって、コンテキストが異なる多くのページがクラス構造を使用します。したがって、ベースにコンテキストを設定すると、同じベースを使用する Web ページの別のインスタンスによって設定されるコンテキストと競合します。Web アプリケーションでは、上記のすべてのクラスがすべてのページに共通のメモリ内にあるためです。
haskell - Numeric Prelude の Additive クラスを使用するとインスタンスが重複する
Numeric prelude を使用していくつかの数学オブジェクトを定義しようとしているときに、問題に遭遇しました。Additive 型クラスはインスタンスを定義します
私が読んだのは、「もし v が加法的なら、[v] も」です (どうやら私はここで間違っていたようです)。それは次のようなものを実装しています
そのため、[1,2,3] + [4,5,6] = [5,7,9] は、私がやりたいことには役に立ちません。私の v タイプは Additive ではないので、問題はないと思いました。残念ながら、私はまだ重複インスタンスエラーを受け取り、非常に混乱していました. 少し読んだところ、何らかの理由でHaskellが「=>」ビットの前のすべてを無視することを理解したので、デフォルトインスタンスを「デフォルトインスタンスの意味で任意のリストが潜在的に追加される」と読むべきでした。この拡張機能は「危険」であるという評判があるにもかかわらず、OverlappingInstances を使用してみましたが、それでも効果がないようです。
これが私のテストケースです。
エラーが発生します (更新: これは GHC の古いバージョンでのみ発生するようです。バージョン 7.2.2 はそれを受け入れるようです):
これは、Additive のインスタンスをデフォルトにしたくないので、リストを使用できないということですか? 私が本当にやりたいことは、そのデフォルトのインスタンスを単に忘れるように ghc に指示することです。そうでない場合は、リストを削除する以外に、ここからどこに行くべきかわかりません。
haskell - Monad のインスタンス数。一見無関係なコードが存在する場合にのみ、インスタンスが重複していますか?
Monad
s を s として扱うことができれば、よりきれいに記述できるコードが少しありますNum
(もちろん、該当する場合)。簡単に完了:
しかし、次の関数をファイルに追加すると…
… 次のエラーが表示されます。
(1)digitToNum
は決して呼び出されず、(2)Ratio
ではないため、これは私には意味がありませんMonad
。したがって、それがどのように、またはなぜ問題なのかはわかりません。これに関するヒントをいただければ幸いです。
これは、Haskell Platform 2012.4.0.0 を使用する GHC 7.4.2 です。
haskell - 不正なインスタンス宣言 / 重複インスタンス
クラス X と Y が与えられた場合、互いのクラスのインスタンスを作成するための最も慣用的なアプローチは何ですか? 例 -
延長は避けたいです。また、これにより厄介な無限再帰が発生する可能性があることを認識しているため、同じことを達成し、比較的 DRY を維持するためのまったく異なるアプローチを受け入れます。以下に、私が抱えている正確な問題に関するいくつかのコンテキストを示します-
これをやりたい -
しかし、私はこれをしなければならないようです -
編集
私のお気に入りのアプローチは、型クラスを保持し、代わりにHasPoints
実装CardPlayer
するdata
ことです。
haskell - 重複するインスタンスの汚いハック?
モジュール A はモジュール B と C をインポートします
モジュール B はインスタンス X をインポートします
モジュール C はインスタンス Y をインポートします
X と Y は、共通型クラスのインスタンスです。
インスタンス X と Y は同じタイプです。つまり、完全にオーバーラップしています。
B または C を別々に使用すると、すべてが機能します。いくつかの比較テスト (またはベンチマーク) を行うためにそれら (ここでは A) をインポートすると、C 内で X と Y の両方が一致するという重複インスタンス エラーが発生します。
C から X へのパスはC -> A -> B
. これが本来あるべき姿ですか?また、これを回避する方法はありますか?通常の状況では 2 つのインスタンスが一緒に使用されることはないため、汚いハックは問題ありません。特にファントムタイプなどは導入したくないです。
haskell - PolyKinds と OverlappingInstances を使用して、k 個の引数に完全に適用される (t :: k) のインスタンスを作成します
これは不可能のようですが、私が取り組んでいることの例を次に示します。
withとinPolyKinds
の上のインスタンスはアリティにすることができます。または、コードは正しく動作しますが、より高いアリティの をサポートするには、任意の数の追加インスタンスを追加する必要があります。これらの 2 つのインスタンスを「任意の引数に完全に適用される」ことを意味する単一のインスタンスに結合する方法はありますか?t
Proxy t
* -> *
* -> * -> *
t
t
k