0
는 다음과 같은 기능을 고려하시기 바랍니다 실패 : 나는 REPL에서 vectTranspose
을 계산하려고하면 예상대로이드리스 - 평등 주장은 구현이 그와 관련이없는 경우에도,
vectTranspose : Vect n (Fin 3) -> Vect 3 (List (Fin n))
vectTranspose {n = Z} [] = [[],[],[]]
vectTranspose {n = (S len)} (x :: xs) with (natToFin len (S len))
| Just l = let
previous = map (map weaken) (vectTranspose xs)
in updateAt x (l ::) previous
, 나는 [[],[],[]]
를 얻을.
When checking right hand side of emptyTest with expected type
vectTranspose [] = [[], [], []]
Type mismatch between
[[], [], []] = [[], [], []] (Type of Refl)
and
vectTranspose [] = [[], [], []] (Expected type)
Specifically:
Type mismatch between
[[], [], []]
and
vectTranspose []
내가 뭔가를 놓치고 있습니까 : 나는 내 코드에서 다음과 같이 동등 주장을 추가하는 경우
여전히
emptyTest : vectTranspose [] = [[],[],[]]
emptyTest = Refl
는 내가 컴파일 오류가? 어떻게 든 어썰트에 [[],[],[]]
의 유형을 지정해야합니까? 이드리스는
Specifically:
Type mismatch between
[[], [], []]
and
vectTranspose []
의 유형에 대해 불평하는 것이
감사합니다! 'Nothing' 케이스를 추가하면 작동합니다. 그러나'natToFin len (S len)'은 항상'Just l'이므로'Nothing' 케이스에 접근 할 수 없습니다. '| 불가능한 것은 없습니다. "라고 말하면서 문제가 남아 있습니다. 결코 도달 할 수없는 실제적인 '아무것도'사례를 제공하지 않고 작동하게하는 방법이 있습니까? – marcosh
나는 좀 더 우아한 접근 방법이 있다고 확신하지만, 간단한 것은 당신의 사례를 다루는 작은 도우미를 제공하는 것이다. 나는 또한 당신의 기능이 무엇을하는지 확신하지 못한다. 그래서 당신은 하루가 끝날 무렵에 완전히 다른 무언가로 끝날 수있다. – Markus