問題タブ [gadt]
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 での GADT の列挙
Enum クラスの Haskell 派生メカニズムの拡張機能はありますか? つまり、「nullary コンストラクター」の場合以外にも、合理的な状況がたくさんあるということです。このトピックに関する作品はありますか?
haskell - GADT の網羅性チェックの失敗
次のコードを検討してください。
funは徹底的に一致しますが、-Wall を指定してコンパイルすると、GHC はケースの欠落について文句を言います。ただし、別のコンストラクターを追加すると:
そうすれば、GHC は楽しみが完全であることを正しく検出します。
私は自分の仕事でこれに似たコードを使用しています.ケースを見逃した場合はGHCに警告を発させ、そうでない場合は警告を発させないようにしたいと考えています. GHC が最初のプログラムで文句を言うのはなぜですか? また、偽のコンストラクタやケースを追加せずに、最初のサンプルを警告なしでコンパイルするにはどうすればよいですか?
haskell - haskellで論理式を解くには?
私は、これらのデータ型定義をその一部として含む haskell プログラムに取り組んでいます。
とデータフォーミュラtsどこ
また、各 Term t を次のように評価する eval 関数:
そして、可能性のある値の置換に対して Formula が満足できるかどうかをチェックする次の関数:
今、私は与えられた Formula を解く解関数を書くように頼まれました:
また、テスト例として次の数式があり、ソリューションが次のように動作することを期待しています。
ソリューション関数は次を返す必要があります。
これまでのところ、この関数の私のコードは次のとおりです。
ヘルパー関数は次のとおりです。
最後に、ここに私の質問があります: このソリューション関数を使用すると、ex1 や ex2 のような数式を問題なく解くことができますが、ex3 を解くことができないという問題があります。 「フォーオール」の . これを行う方法について何か助けがあれば、よろしくお願いします。
scala - Scala GADT サポートの制限を理解する
Test.test のエラーは不当に思えます:
エラーを変更する、または解消するには、いくつかの方法があります。
特性 A (およびケース クラス B) の V パラメータを削除すると、エラーの「GADT-skolem」部分はなくなりますが、「コンストラクタをインスタンス化できません」部分は残ります。
Test クラスの U パラメータを Test.test メソッドに移動すると、エラーはなくなります。なんで ?(同様に、エラーは Test2.test2 には存在しません)
次のリンクもその問題を特定していますが、提供された説明がわかりません。http://lambdalog.seanseefried.com/tags/GADTs.html
これはコンパイラのエラーですか? (2.10.2-RC2)
それを明確にするのを手伝ってくれてありがとう。
2014/08/05: コードをさらに単純化することに成功し、コンパイル エラーを発生させずに U が即時関数の外にバインドされる別の例を提供します。2.11.2 でもこのエラーが発生します。
単純化すると、これはコンパイラのバグまたは制限のように見えます。または、何か不足していますか?
haskell - 動的な要求/応答タイプのパイプ?
これは理にかなっているように思えますが、タイプの問題があります。Client
オプションのリストを に送信できる が必要Server
です。これは、オプションを選択して、選択した要素を返します。だから、このようなもの:
アイデアは、サーバーがa -> String
リストの各要素で関数を呼び出して、それらをユーザーに表示できるということです。リストと関数が一致する限り、a を変更できるようにしたいと考えています。
このようなことは可能ですか?たぶん、私が望む制約は何らかの方法でGADTにエンコードできますか?
haskell - unsafeVacuous で失敗する適切なポリモーフィック Functor インスタンスを作成するにはどうすればよいでしょうか?
Void
Haskell Libraries メーリングリストで議論しているときに、次のような発言がありました:
昔は、タイプが何も持つべきではないと教えてくれたときに、
unsafeCoerce
全体をトラバースしてその内容を置き換えるのにお金を払いたくないというコナー・マクブライドの要請で実装されていました。Functor
これは、適切な Functor に適用された場合は正しいですが、GADT が存在する場合は覆すことができます。
のドキュメントにunsafeVacuous
も次のように記載されています。
タイプの値のみを保持する
Void
ものよりも無人である場合は、値を保持していません。Functor
Void
これは、引数に対して GADT のような分析を実行しない有効なファンクターに対してのみ安全です。
このようないたずら好きな GADTFunctor
インスタンスはどのように見えるでしょうか? (もちろんトータル機能のみを使用しundefined
、error
などは使用しません)
haskell - 関数の入力と出力を導出するために再帰的な型レベル関数を開発しようとしています
私が求めていることを理解するには、次の定義が必要です。
これらの定義を使用して、次のように機能する関数を作成したいと思います。
どこ
と
基本的な考え方は、S に使用されるコンストラクターと R を構築するときに選択されたパラメーターに基づいて、さまざまな形状の入力を受け入れ、さまざまな形状の出力を生成することです。種類の不一致エラー。この種のものをエンコードするための直感的でクリーンな方法があるかどうか疑問に思っていました.
私が持っている現在の試みは次のとおりです。
このアプローチは、R の最初の引数には種類の Param が必要ですが、Param には種類の * があり、これを修正する方法がわかりません。制約を追加して変数を使用すると、次のようになりました。
もちろん、Haskell は Kind を制約として使用することを拒否しています。私はかなり迷っており、これでどこに行くべきかわかりません。ヘルプやガイダンスは非常に貴重です。