문제

나는 Haskell을 처음 접했지만 대부분의 기본 사항을 얻습니다. 그러나 내가 알아낼 수없는 한 가지가 있습니다. 아래의 예를 고려하십시오.

example :: Int -> Int
example (n+1) = .....

이 예제의 (n+1) 부분은 어떻게 든 음수의 입력을 방지하지만 방법을 이해할 수 없습니다. 예를 들어. 입력이 (-5) 인 경우 (-6 + 1)이 (-5)이기 때문에 N이 (-6)이 될 것으로 예상합니다. 테스트시 출력은 다음과 같습니다.

프로그램 오류 : 패턴 매치 실패 : 예 (-5)

누구든지 이것이 왜 마이너스를 받아들이지 않는지 설명 할 수 있습니까?

도움이 되었습니까?

해결책

그게 방법입니다 N+K 패턴 작동하도록 정의됩니다.

n+k 패턴 (여기서 n은 변수이고 k는 양의 정수 문자 그럴) x> = k가 성공하면 n을 x -k로 바인딩하고 그렇지 않으면 실패합니다.

N+K 패턴의 점은 유도를 수행하는 것이므로 기본 케이스 (K-1 또는 0)로 예제를 완료하고 매개 변수가 오류인지 아닌지를 결정해야합니다. 이와 같이:

example (n+1) = ...
example 0 = ...

당신이 본질적으로 요구하는 의미론은 상당히 무의미하고 중복 될 것입니다.

example n = let n' = n-1 in ...

동일한 효과를 달성합니다. 패턴의 요점은 때때로 실패하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top