문자열을 비교하는 함수를 만들었습니다. 물론 이것은 배울 수있는 연습이며 가장 현대적인 언어의 문자열을 사용하는 < 연산자를 잘 알고 있습니다.). 재귀를 수행하기 위해 함수에 패턴 매칭을 사용하고 있지만, 실제로 어떤 일이 일어나고 있는지 확실하지 않습니다. 여기 내 코드는 다음과 같습니다여러 경우를 포함하는 패턴 일치
compareStrings :: String -> String -> Char
compareStrings (x:xs) (y:ys)
| x > y = '>'
| x < y = '<'
| x == y = compareStrings xs ys
compareStrings [a] [b]
| a < b = '<'
| a > b = '>'
| a == b = '='
그래서, 경우에 나는 하나 개의 빈 목록과 싱글 목록 및 빈 목록과 일반 목록 (여러 요소)처럼, 내 코드 취재 아니에요 많이 있습니다. 그리고 물론 그 대칭 대응. 어떻게 모두 확인했는지 확인할 수 있습니까? 후드 아래에 뭔가가 있거나 그냥 문자열 (내 의도였던 문자가 아닌)을 어느 시점에서 비교하는 것인가? 나는 그것을 인식하지 못하고 있습니까?
- 요약하면 다음과 같습니다. 내 코드에서 발생할 수있는 모든 사례를 다루고 있으며 그렇지 않은 경우 어떻게 확인할 수 있습니까? 그리고 두 개의 서로 다른 패턴을 선언하지 않고 대칭의 경우를 처리하는 방법 (첫 번째 목록은 비어 있지만 두 번째 것은 아니고 다른 방법은 둥근 것처럼)을 처리하는 방법은 무엇입니까?
싱글 톤의 경우 중복되어 두 개의 빈 목록을 비교해도 충분합니다 (항상 같음). 일단 그렇게하면 다른 두 가지 사례 만 남게됩니다. –
대칭의 경우 대개의 경우 대소 문자를 적어 둡니다. 이건 약간 짜증나지만 실제로는 너무 많지는 않습니다. –