HPC를 사용하여 하스켈에서 작성한 코드의 100 % 테스트 커버리지를 얻으려고합니다. 그러나 이런 식으로 쓸 경우 :하스켈에서 경비원과 함께 100 % 코드 커버리지를 보유하고 있음을 HPC에 알리는 방법은 무엇입니까?
fac n | n > 0 = n * (fac (n - 1))
| otherwise = 1
그런 다음 guard 문의 두 번째 표현식에는 항상 True가 지정됩니다. 일반적인 경우에 이것을 극복하는 가장 쉬운 방법은 무엇입니까?
편집 : 그냥 정리해주세요. 이 코드 :
fac n = if n > 0 then n * (fac (n - 1))
else 1
HPC와 잘 작동합니다 (100 % 코드 적용 범위 제공).
나는 기본적으로이 문제로 고통 해요 : http://hackage.haskell.org/trac/ghc/ticket/3175
극복한다는 것은 무엇을 의미합니까? 함수는 총 함수입니다 (모든 입력에 대해 정의됩니다).이 함수는 양수와 음수로 시도 할 때 100 % 코드 적용 범위에 도달합니다. – stonemetal
만약 HPC가 단위 테스트 세트를 작성한다면 HPC는 100 % 코드 커버리지를 가지고 있다고 말하지 않을 것입니다. –
'otherwise'를 동등 함과보다 작은 경우로 바꿀 수 없습니까? (숫자) 입력 유형 T는 전체 순서를 가지므로 T의 모든 n, m에 대해 n m 중 하나를 선택합니다. 각각에 대한 사례를 정의하면됩니다. –
danportin