Pattern matching

Ahn9807 (토론 | 기여)님의 2023년 2월 25일 (토) 05:10 판 (새 문서: 분류: 프로그래밍 언어 == 개요 == 패턴 매칭은 일련의 토큰들이 특정 패턴에 포함되는지를 판단하는 구문을 말한다. 패턴매칭은 Modern programming langauge에서 많이 사용되며, 특히 함수형 언어혹은 함수형 언어의 특징을 포함하는 언어들에서 많이 사용된다. 이러한 예시로는 Rust, C#, Scala와 같은 언어들이 있다. * sequence matching: 주어진 일련의 토큰들에서...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


개요

패턴 매칭은 일련의 토큰들이 특정 패턴에 포함되는지를 판단하는 구문을 말한다. 패턴매칭은 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패턴을 생각할 수 있다.