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

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

haskell - Haskellで派生はどのように機能しますか?

Haskellの代数的データ型(ADT)は、それらから派生することにより、いくつかのタイプクラスShow、などEq)。

私の質問は、これはderivingどのように機能するのか、つまり、Haskellは派生ADTの派生型クラスの関数を実装する方法をどのように知っているのかということです。

また、なぜderiving特定の型クラスのみに制限されているのですか?派生可能な独自の型クラスを記述できないのはなぜですか?

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

haskell - コンストラクターの非表示/非表示フィールド

Learn You a Haskell for Great Goodを進めていて、セクション 8.4「派生インスタンス」まで到達しました。このセクションには、次のデータ型宣言があります。

試しながら

次のエラーが発生しました。

に修正lastnameするlastNameことで、エラーを削除しました。

質問:

エラー メッセージの単語(visible)は、フィールドを非表示/非表示として宣言する可能性があることを示唆しています。これは正しいですか?そうである場合、コンストラクターでフィールドを非表示として宣言するにはどうすればよいですか?また、非表示フィールドを宣言する必要がある一般的なシナリオは何ですか? それらの使用の簡単な例を挙げてこれを説明できれば幸いです。

注: LYAH の隠しフィールドまたは非表示フィールドに関する参照や詳細は見つかりませんでした。

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

haskell - haskell列挙型-値コンストラクターがnullaryではなくvalueを必要とする場合はどうすればよいですか?要件シナリオが示されています

LYAH派生インスタンスで次のように述べています

[...]すべての値コンストラクターはnullary(パラメーター、つまりフィールドを取りません)であるため、列挙型クラスの一部にすることができます。

今、私が数ヶ月かかると、それは

私の質問は次のとおりです。

  1. 各月の最大日数の値をどこに保存しますか?
  2. うるう年の場合は2月の場合、2月のmaxDaysは29日であり、それ以外の場合は28日になります。

Javaでは、次のようにコーディングできます。

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

haskell - Derive と Template Haskell などを使用して、Vinyl レコード タイプの Binary インスタンスを派生させる方法はありますか

タイプレベルの種類を使用して、フィールドレベルのポリモーフィズムと自動的に提供されるレンズを備えたレコード構造を作成するVinyl パッケージを試しています。これらの機能はどちらも私のプロジェクトにとって非常に便利です。前者は名前の衝突なしに互いのサブタイプであるレコード構造を許可し、後者はネストされた構造の更新を劇的に簡素化するからです。

問題は、結果の構造をシリアライズすることです。通常は Data.DeriveTH を使用して自動的に Binary インスタンスを派生させますが、これらの構造に対応できないようです。次のコード

GHCIでこのエラーが発生します

これは、Derive Convert モジュールの次のコードに関連しているようです。

Template Haskell の読み方がよくわからないので、ここではあまり進歩できません。私はデータ型ではなく型シノニムを派生させており、それがそれを壊している可能性があることに気づきました。

このさらに鈍いエラーにつながります:

Convert.hs を見ると、

GHC 7.6 が、Derive テンプレート Haskell が考慮していない新しい言語構造を導入し、非網羅的なパターンにつながっていることが問題になっていると思います。

だから私の質問は、派生に追加するか、ビニールレコードタイプから独自の派生を書くか、または同様のものを作成することによって、前進する方法はありますか? ヴァイナルの利点と、すべての連載を手書きすることとをトレードオフしなければならなかったとしたら、それは残念なことです。

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

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:'

どうすればこれを達成できますか?誰かがスニペットを投稿したり、私の間違いを指摘したりできますか (コードまたはコンセプトで)。

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

haskell - GHCにData.Typeableのインスタンスを生成させるにはどうすればよいですか?コンテキストでTypeableを使用するGADTの場合はどうすればよいですか?

次のコードがあるとします。

次に、次のインスタンス宣言が制約なしtで機能します。

そして私が期待することをします。


ただし、次のインスタンス宣言は機能しません。

GHC(私は7.6.1を使用しています)が次のように不平を言っているので:

Typeable tもちろん、コンテキストへの追加は機能します。ただし、次のインスタンスを追加することもできます。

GHCにこの後者のインスタンスを作成させる方法はありますか?もしそうなら、どのように?そうでない場合は、なぜですか?

制約の場合と同じように、GHCがコンストラクターTypeableのコンテキストから制約をプルできることを期待していました。私の問題は、GHCが明示的に書き込みを禁止しているという事実に要約されていると思います。また、標準インスタンスは辞書を見つけるために「内部を調べる」ことができません。WrapEqderiving instance Typeable (Wrapper t)(Typeable1 s, Typeable a) => Typeable (s a)s aTypeable a