型駆動開発を機能定義:私は「ので、私はEqList (x :: xs) (x :: ys)
でx
を推論リストの平等は、この演習を提示イドリスと
data EqList : (xs : List a) -> (ys : List a) -> Type where
Same : (xs: List a) -> EqList xs xs
sameS : (xs : List a) -> (ys : List a) -> (x: a) -> (eq : EqList xs ys) -> EqList (x :: xs) (x :: ys)
sameS xs xs x (Same xs) = Same (x :: xs)
same_cons : {xs : List a} -> {ys : List a} -> (eq : EqList xs ys) -> EqList (x :: xs) (x :: ys)
same_cons {xs} {ys} eq = sameS xs ys _ eq
:
same_cons : {xs : List a} -> {ys : List a} -> xs = ys -> x :: xs = x :: ys
はしかし、私は経由でそれを実装しようとしましたどのようにx
を取得する混乱m xs
とys
が空の場合混乱しています。また
、上記のコンパイルが、私はそれを呼び出すようにしようとしたとき、それは失敗しました:
*Exercises> same_cons (Same [1,2,3])
(input):Can't infer argument x to same_cons