2016-09-08 2 views
1

정말 기본적인 질문처럼 보인다,하지만 난 경우 :이기종 데이터 생성자를 테스트하는 방법은 무엇입니까?

data LogLevel = Info | Warning | Error Int 
x = Info 
y = Error 13 

나는

if (x==Info) 

쓸 수 있지만, 어떻게 유형의 오류에 대한 테스트를 작성합니다?

+1

[하스켈은 데이터 유형에 Eq를 정의하지 않고 어떻게 패턴 일치를 수행합니까?] (http://stackoverflow.com/questions/4718084/how-does-haskell-do-pattern-matching-without -us-defining-a-eq-on-our-data-types) (당연히 정확한 것은 아니지만 해당 스레드를 읽는 것이 귀하의 질문에 대한 답변이 될 것입니다. 그러나 게시 한 질문에 대한 짧은 대답은 "패턴 일치"입니다) – jberryman

+0

매우 감사. – RoyM

답변

7

Error은 유형이 아닙니다. 그것은 데이터 생성자입니다. 패턴 일치를 사용하여 LogLevel 유형의 다양한 값을 구별 할 수 있습니다. 여기

case x of 
    Info -> ... 
    Warning -> ... 
    Error n -> ... 

뿐만 아니라 당신이 x의 값에 따라 올바른 "지점"을 가지고 있지만, 그 패턴이 일치 할 때 당신은 또한 (n에서) Error와 관련된 특정 정수를 얻을 것이다.

+0

감사합니다. 정확히 내가 누락 된 부분입니다. – RoyM

관련 문제