問題タブ [idris]
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/Idris でのオープン型レベル証明
Idris/Haskell では、型に注釈を付け、Vect などの GADT コンストラクターを使用することでデータのプロパティを証明できますが、これにはプロパティを型にハードコーディングする必要があります (たとえば、Vect は List とは別の型でなければなりません)。たとえば、コンストラクターをオーバーロードしたり、効果の流れで何かを使用したりすることにより、プロパティのオープンセット (長さと移動平均の両方を保持するリストなど) を持つ型を持つことは可能ですか?
logic - Idris の Forall 量化子と複雑なブール命題
私は依存型に不慣れで、Haskell の経験があり、ゆっくりと Idris を学んでいます。演習として、ハフマン エンコーディングを書きたいと思います。現在、コード ツリーの「平坦化」によってプレフィックス コードが生成されるという証明を書こうとしていますが、量指定子に行き詰まっています。
あるリストは別のリストのプレフィックスであるという単純な帰納命題があります。
これは有効なアプローチですか?または、「xs ++ zs = ysのようなzsがある場合、 xsはysのプレフィックスです」のようなものが良いでしょうか?
「forall」量指定子を導入するのは正しい方法でしたか (私が理解できる限り、Agda では のようなものになります
pNext : ∀ {x xs ys} → Prefix xs ys → Prefix (x :: xs) (y :: ys)
)? pNext の最初の引数は暗黙的であるべきですか? 2 つのバリアントの意味上の違いは何ですか?
次に、どの要素も別の接頭辞を形成しないベクトル用に作成したいと思います。
空ベクトルには接頭辞がありません:
要素 x、ベクトル xs、および xs のどの要素も x の接頭辞ではない (およびその逆) という証明が与えられると、x :: xs はそのプロパティを保持します。
これは無効な型であり、最初のものを処理した後に修正したいと考えていますが、pvNext の量指定子について同様の質問があります。
ありがとうございました。
dependent-type - Idris で型が関数型かどうかをテストする
次のように、型が関数型かどうかを判断する関数が必要です。
True
ただし、これはすべての入力に対して返されます。どうすればこれを機能させることができますか?
reflection - Type パラメータの反映
関数を作成しようとしています
reflect
私は戦術を使ってそれを試しました:
t
しかし、これは変数自体に反映されます:
proof - 定義によるイドリス証明
私は関数を書くことができます
そして自明に証明します:
ここまでは順調ですね。ここで、この関数を一般化して、負の指数で機能するようにします。もちろん、逆を提供する必要があります。
次に、同様のステートメントを証明しようとします。
しかし、Idris は の適用を評価することを拒否しpowApplyI
、 のタイプを?powApplyIZero_rhs
as powApplyI (Pos 0) i x = x
(yes, Z
is changed to 0
) のままにします。ポイントフリーではないスタイルで書き、モディファイアを使用しpowApplyI
て独自のスタイルを定義しようとしましたが(これはわかりません)、どちらも機能しませんでした。の最初のケースを調べて証明を処理しないのはなぜですか?ZZ
%elim
powApplyI
イドリスのバージョン: 0.9.15.1
ここにいくつかのことがあります:
最初の証明はうまくいきましたが、?powApplyZFZero_rhs
頑固に型を保持していpowApplyZF (Pos 0) f x = x
ます。明らかに、ZZ
(または私の使い方に)問題があります。