패턴 미적분학

Pattern calculus

패턴 미적분은 매우 일반적인 종류의 패턴 매칭에 기초한다.람다 미적분학처럼 기능평가의 일률적인 처리를 지원한다.또한 함수를 주장으로 전달하고 결과로서 반환할 수 있도록 한다.또한 패턴 미적분은 쌍을 이루거나 리스트를 만들거나 나무를 만들 때, 인수의 내부 구조에 대한 균일한 접근을 지원한다.또한, 그것은 패턴이 논쟁으로 전달되고 결과로서 반환될 수 있도록 한다.균일한 접근은 패턴 매칭 기능으로 설명됨size 임의 데이터 구조의 크기를 계산한다.프로그래밍 언어 본디의 표기법에서는 재귀 함수에 의해 주어진다.

하게 하다 읊다 사이즈를 맞추다 =     x y -> (사이즈를 맞추다 x) + (사이즈를 맞추다 y)     x -> 1 

두 번째 또는 기본 사례 x -> 1패턴과 일치하다x논거와 반환에 반하여1. 이 케이스는 첫 번째 케이스에서 매칭이 실패한 경우에만 사용된다.첫 번째 또는 특수 케이스는 비어 있지 않은 목록 또는 쌍과 같은 화합물과 일치한다.일치 바인드x왼쪽 구성 요소 및y올바른 구성 요소로그런 다음 케이스 본체에 이러한 구성 요소의 크기를 함께 추가한다.

유사한 기법은 검색과 업데이트를 위한 일반적인 쿼리를 제공한다.이런 식으로 재귀와 부패를 결합하면 경로 다형증이 생긴다.

패턴을 매개 변수로 전달하는 능력(패턴 다형성)은 일반적인 제거제를 정의함으로써 설명된다.주어진 생성자를 가정해 보십시오.Leaf나무의 잎을 만들기 위해Count숫자를 카운터로 변환하기 위해.그에 상응하는 제거제는 다음과 같다.

엘림리프  =     y -> y  엘림카운트 =   카운트 y -> y 

예를 들어,elimLeaf (Leaf 3)로 평가하다.3하듯이elimCount (Count 3).

이러한 예는 일반 제거제를 적용하여 만들 수 있다.elim문제의 건설업자에게.에 의해 정의된다.

엘림을 바르다 =   x ->   {y} x y -> y 

지금elim Leaf로 평가하다. {y} Leaf y -> y에 해당하는elimLeaf. 또한elim Count와 같다elimCount.

일반적으로, 곱슬곱슬한 교정기는{}패턴의 바운드 변수를 포함하므로x자유롭고y에 묶여 있다 {y} x y -> y.

외부 링크