問題タブ [derived-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で派生はどのように機能しますか?
Haskellの代数的データ型(ADT)は、それらから派生することにより、いくつかのタイプクラス(Show
、などEq
)。
私の質問は、これはderiving
どのように機能するのか、つまり、Haskellは派生ADTの派生型クラスの関数を実装する方法をどのように知っているのかということです。
また、なぜderiving
特定の型クラスのみに制限されているのですか?派生可能な独自の型クラスを記述できないのはなぜですか?
haskell - コンストラクターの非表示/非表示フィールド
Learn You a Haskell for Great Goodを進めていて、セクション 8.4「派生インスタンス」まで到達しました。このセクションには、次のデータ型宣言があります。
試しながら
次のエラーが発生しました。
に修正lastname
するlastName
ことで、エラーを削除しました。
質問:
エラー メッセージの単語(visible)
は、フィールドを非表示/非表示として宣言する可能性があることを示唆しています。これは正しいですか?そうである場合、コンストラクターでフィールドを非表示として宣言するにはどうすればよいですか?また、非表示フィールドを宣言する必要がある一般的なシナリオは何ですか? それらの使用の簡単な例を挙げてこれを説明できれば幸いです。
注: LYAH の隠しフィールドまたは非表示フィールドに関する参照や詳細は見つかりませんでした。
haskell - Derive と Template Haskell などを使用して、Vinyl レコード タイプの Binary インスタンスを派生させる方法はありますか
タイプレベルの種類を使用して、フィールドレベルのポリモーフィズムと自動的に提供されるレンズを備えたレコード構造を作成するVinyl パッケージを試しています。これらの機能はどちらも私のプロジェクトにとって非常に便利です。前者は名前の衝突なしに互いのサブタイプであるレコード構造を許可し、後者はネストされた構造の更新を劇的に簡素化するからです。
問題は、結果の構造をシリアライズすることです。通常は Data.DeriveTH を使用して自動的に Binary インスタンスを派生させますが、これらの構造に対応できないようです。次のコード
GHCIでこのエラーが発生します
これは、Derive Convert モジュールの次のコードに関連しているようです。
Template Haskell の読み方がよくわからないので、ここではあまり進歩できません。私はデータ型ではなく型シノニムを派生させており、それがそれを壊している可能性があることに気づきました。
このさらに鈍いエラーにつながります:
Convert.hs を見ると、
GHC 7.6 が、Derive テンプレート Haskell が考慮していない新しい言語構造を導入し、非網羅的なパターンにつながっていることが問題になっていると思います。
だから私の質問は、派生に追加するか、ビニールレコードタイプから独自の派生を書くか、または同様のものを作成することによって、前進する方法はありますか? ヴァイナルの利点と、すべての連載を手書きすることとをトレードオフしなければならなかったとしたら、それは残念なことです。
objective-c - .m ファイルで宣言されたメソッドを継承する
Objective-Cには保護されたメソッドがないことがわかりました。これが私の問題です。共有される多くの機能とプロパティを持つ 2 つの viewController があります。私のビジョンは、共有メソッドとプロパティを保持する BaseViewController を持つことでした。そこから、同じ変数を使用しながら、2 つのクラスが必要な機能を継承してオーバーライドします 。 hファイル
私の質問を明確にするために、コードを追加しています:)
を呼び出すと[super setBtns:p_btns];
エラーが発生します。
DerivedGameViewController.m:No visible @interface for 'BaseViewController' declares the selector 'setBtns:'
どうすればこれを達成できますか?誰かがスニペットを投稿したり、私の間違いを指摘したりできますか (コードまたはコンセプトで)。
haskell - GHCにData.Typeableのインスタンスを生成させるにはどうすればよいですか?コンテキストでTypeableを使用するGADTの場合はどうすればよいですか?
次のコードがあるとします。
次に、次のインスタンス宣言が制約なしt
で機能します。
そして私が期待することをします。
ただし、次のインスタンス宣言は機能しません。
GHC(私は7.6.1を使用しています)が次のように不平を言っているので:
Typeable t
もちろん、コンテキストへの追加は機能します。ただし、次のインスタンスを追加することもできます。
GHCにこの後者のインスタンスを作成させる方法はありますか?もしそうなら、どのように?そうでない場合は、なぜですか?
制約の場合と同じように、GHCがコンストラクターTypeable
のコンテキストから制約をプルできることを期待していました。私の問題は、GHCが明示的に書き込みを禁止しているという事実に要約されていると思います。また、標準インスタンスは辞書を見つけるために「内部を調べる」ことができません。Wrap
Eq
deriving instance Typeable (Wrapper t)
(Typeable1 s, Typeable a) => Typeable (s a)
s a
Typeable a