저는 놀라운 TDDwI와 함께 간단하게 removeElem
을 쓰고 있습니다. 그것에 대해이러한 선언 (같은 패턴에 대한)이 형식 검사기를 만족시키는 이유는 무엇입니까?
네 가지 질문 :
가 왜 같은 패턴 3 명 선언을 쓸 수 있습니까?
absurd
과impossible
의 차이점은 무엇입니까?[]
반환 세번째 경우- ,
[]
는 ... 따라서, 값 증거xs
가a
제거했고, 바로 ... 한 것을? 그 중 3 개를 모두 제거하면 기능이 여전히 남아 있으며 이상한 일이 일어나는 이상한 간질이 생깁니다. ?. 당신이 무엇을 중요하지 않게
removeElem : (value : a)
-> (xs : Vect (S n) a)
-> (prf : Elem value xs)
-> Vect n a
removeElem value (value :: ys) Here = ys
removeElem {n = Z} value (y :: []) (There later) = absurd later -- ??
removeElem {n = Z} value (y :: []) (There later) impossible -- ??
removeElem {n = Z} value (y :: []) (There later) = [] -- ??
removeElem {n = (S k)} value (y :: ys) (There later) =
y :: removeElem value ys later
"당신이하는 일은 중요하지 않습니다."> 분명히 할 수 있습니까? '[] '대신 다른 값을 넣을 수 없습니다. 그리고 언제 '불가능'대신 '터무니없는'을 택할 것입니까? –
@ Josh.F 당신은 무엇이든 증명하기 위해 터무니없는 것을 사용할 수 있기 때문에 문자 그대로 모든 값을 반환 할 수 있습니다. – 2426021684