2010-11-27 3 views
2

나는 ML을 배우고 있습니다. 누군가 철저한 패턴을 어떻게 설명 할 수 있습니까?철저한 패턴

+1

나는이 질문에서 lisp 태그를 제거했는데, 나는 lisp과 아무 관계가 없다는 것을 알았 기 때문에. Lisp에는 패턴 매칭조차 없다. – sepp2k

+1

몇 가지 배경 * 왜 * 하나 사용해야 : http://stackoverflow.com/questions/1882334 – Dario

답변

5

패턴 일치는 실패 할 수없는 경우 철저합니다. 나는. 발생할 수있는 모든 경우는 패턴으로 덮여 있습니다.

fun sum (x::xs) = x + sum xs 

를 두 경우 모두가 포함되어 있기 때문에 철저한 다음과 같습니다 :이 목록이 비어있는 경우에는 적용되지 않기 때문에 예를 들어

는 다음과 같은 패턴 일치가 철저하지

fun sum (x::xs) = x + sum xs 
    | sum [] = 0 

일반적으로 대수 데이터 형식의 패턴 일치는 기본 사례가 있거나 모든 생성자에 대한 사례가 있고 각 하위 패턴의 일치가 철저한 경우에만 철저합니다.