개요
패턴 매칭은 일련의 토큰들이 특정 패턴에 포함되는지를 판단하는 구문을 말한다. 패턴매칭은 Modern programming langauge에서 많이 사용되며, 특히 함수형 언어혹은 함수형 언어의 특징을 포함하는 언어들에서 많이 사용된다. 이러한 예시로는 Rust, C#, Scala와 같은 언어들이 있다.
- sequence matching: 주어진 일련의 토큰들에서 구문의 위치를 파악하는 것이다. (e.g. where is the first "a" in "pattern_matching"?)
- tree matching: 주어진 일련의 토큰의 구조에서 구문이 어떤 토큰에 포함되어 있는지를 파악하는 것이다. (e.g. what type of Nation(Korea)?)
예시
expr match {
case variant_id_1(field_id_11, ... ) => expr1
case variant_id_2(field_id_22, ... ) => expr2
}
이를 좀더 구체적인 예로 생각해 보자면,
shape match {
case Triangle(a, b, c)=> a + b + c
case Rectangle(h, w) => 2 * (h + w)
_ => todo!()
}
와 같이 shape의 타입을 판단하여 다른 결과를 가져오는 match패턴을 생각할 수 있다.