問題タブ [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 - 再帰リスト変換での重複インスタンスの動作
重複するインスタンスは、再帰リスト変換で意図したとおりに優先されません。
任意の深さのネストされたリストで動作する転置関数を作成しようとしています。目標は 2 つの関数を用意することです。1 つは「最高次元」を「最低次元」に転置できます。つまり、次元 [a, b, c] のネストされたリストは、次元 [ b、c、a]、および[a、b、c]と[c、a、b]の反対を行うもの。
私の意図は、最初のインスタンスがすべてのネストされたリストに適用され、2 番目のインスタンスが他のすべてに適用されることです。
以下はテストの例です。「ref」は関数の意図された動作を示します。
ただし、参照とテストの結果は異なります。たとえば、次のようになります。
重複するインスタンスを使用した経験があまりないため、インスタンスの選択方法がわかりません。私には、転置は最初の「レイヤー」でのみ発生し、その後で 2 番目のインスタンス (id) が使用されるように見えます。これにより、効果的に通常のトランスポーズに変わりますが、これはあまり興味深いものではありません。
haskell - インスタンスをオーバーラップさせずに、モナド型変数を持つクラスのインスタンスをポリモーフィックに持ち上げる方法はありますか?
この質問は、
`MonadIO` 型変数を持つクラスのインスタンスを変換されたモナドに持ち上げる
これは、これが使用されるアプリケーションの例を提供します。
アイデアは、型クラス
異なるモナドに基底インスタンスが存在する
. 私が欲しいのは、任意のインスタンスをそれ自体、またはトランスフォーマー スタックの上位に持ち上げる方法liftIO
ですIO
。私の最初のアイデアは、持ち上げインスタンスを定義することでした
lift
ただし、これには、ポリモーフィックと同様に、複数のトランスフォーマーが適用されたときに重複するインスタンスが作成されるという問題があり、たとえばlift . lift
.
代わりに同様のデフォルト インスタンスを使用することが提案されましたが、
その後、リフティング インスタンスを宣言するために使用できます
. これは機能しますが、リフティング インスタンスはベース インスタンスごとに宣言する必要があるため、興味があります。重複するインスタンスに頼らずにこれを解決する他の方法はありますか?