私はIdrisに機能キューのようなものを実装しようとしていますが、Queue ty n m (n+m)のような要素の数を持っています。nは1の要素の数ですVect n ty、m第2の要素Vect m tyであり、(n+m)が要素です。 問題は、私は暗黙の引数としてこれらのサイズを操作する際に書き換えルールを適用することの問題に実行している、次のとおりです。 module Queue
impor
に平等の証明で部分式を置き換えます。 plusDouble : (a:Nat) -> (a + a) = a*2
plusDouble a =
rewrite multCommutative a 2 in
rewrite plusZeroRightNeutral a in Refl
は、だから私は、私は信じているbasicall: lemma1 : {x:Nat} ->
私は、イドリスで簡単な依存ペアのSemigroupインターフェイスを実装しようとしている中に依存ペアのための半群が、これはコンパイルされません:エラー Type mismatch between
ty
and
Nat
と Semigroup (n ** Vect n f) where
(<+>) (_ ** xs) (_ ** ys) = (_ ** xs ++
私はIdrisでinterfaceの簡単な例をコンパイルしようとしています。 interface Foo a where
foo : a -> String
しかし、私は、この型チェックエラー得続ける:私はそれはチュートリアルのShowインターフェイスと論理的に同じであるべきと考えてい error: expected: "with",
argument expression,
f
考えるType-Driven Development with Idrisから次:私は交換する場合 import Data.Vect
data EqNat : (num1 : Nat) -> (num2 : Nat) -> Type where
Same : (num : Nat) -> EqNat num num
sameS : (eq : EqNat k j)