idris

    0

    1答えて

    を失敗した実装はその関連性がない場合でも、次の関数を考えてみてください: vectTranspose : Vect n (Fin 3) -> Vect 3 (List (Fin n)) vectTranspose {n = Z} [] = [[],[],[]] vectTranspose {n = (S len)} (x :: xs) with (natToFin len (S len))

    1

    1答えて

    私は、バイナリと単項関数からツリーとして構築された、n-ary関数の従属型を定義しようとしています;これは(Vect n a) -> aの型と同型です) Idrisを学ぶ練習として。 n項関数に引数を適用する関数を定義しようとしている((N-1)進機能を生成する)一方で、私は非常に疑わしいエラーを得た: Type mismatch between ArityFn m a (Type

    4

    1答えて

    私は、ヒルベルト平面のジオメトリにインシデントの公理を実装しようとしています。 interface (Eq point) => Plane line point where -- Abstract notion for saying three points lie on the same line. colinear : point -> point -> point ->

    2

    1答えて

    私はIdrisを学んでおり、私はVectタイプのQuicksortを実装しようと考えていました。 しかし、ピボット要素とベクトルを指定すると、≤ピボット要素とピボット要素を持つ2つのベクトルを分割するユーティリティメソッドでは苦労しています。 splitListOn : Ord e => (pivot : e) -> List e -> (List e, List e) splitListOn

    1

    1答えて

    私は第8章Ididrisによるタイプドリブン開発を進めており、リライトとReflとのやりとりに関する質問があります。 plusCommutative 1 kが1 + kのすべてのインスタンスを探し、k + 1と交換します myReverse : Vect n elem -> Vect n elem myReverse [] = [] myReverse {n = S k} (x :: xs)

    0

    1答えて

    thisのドキュメントには、replaceを使用して証明を完成させる方法が記載されていますが、rewriteが使用されています。これはreplaceという文章砂糖のようです。私はそれを明示的に使用する方法を理解することに興味があります。 私が正しく理解していれば、反射性によって証明可能となり、k = plus k 0という証拠与えられ、S (plus k 0) = S (plus k 0)としてS

    3

    1答えて

    idrisの従属レコードのタイプコンストラクタに対するパラメータにインタフェース制約を設定できますか? 私はインターフェイスShow : Type -> Typeを持っていると言います。今、私は、次の依存のレコードに制約を配置する必要があります。 record Source s where constructor MkSource initial : s 私はそれが常にSh

    4

    2答えて

    のための式は、私が data MyType = One | Two | Three ... | Ten のような列挙型を持っていると私はそれのためにEqインターフェイスを実装したいとします。私は次のようにそれをすることができました Eq MyType where One == One = True Two == Two =

    2

    1答えて

    次のスニペットのための(番組の)実装を(https://stackoverflow.com/a/37461290/2129302)から検索された: tensor : Vect n Nat -> Type -> Type tensor [] a = a tensor (m :: ms) a = Vect m (tensor ms a) 私は次のように定義したいと思います: mkStr :

    2

    1答えて

    以下のコードで問題が発生しています。基本的にスライスタイプを作りたいと思っています。動機づけはPythonから来ており、スライスは[start:end:step]であり、リストからサブリストをスライスするために使用されます。これは、概念的には、インデックスのシーケンスと同じである[start, start+step, start+2*step, ..., end]です。 私がそれをキャプチャしよう