Casamento de padrões
Em ciência da computação, casamento de padrões é o ato de verificação da presença de um padrão em um conjunto de dados. Em contraste ao reconhecimento de padrões, o padrão é rigidamente especificado, seja por uma cadeia de caracteres ou uma árvore. O casamento de padrões é usado para testar se o objeto de estudo possui a estrutura desejada, para então encontrar a estrutura relevante, encontrar os pontos de alinhamento e substituir a parte do casamento por outra estrutura. Padrões de sequência (como cadeias de texto) são geralmente escritos usando expressões regulares. Padrões de árvores podem ser usados em linguagens de programação como uma ferramenta geral para processar dados baseado em sua estrutura. Algumas linguagens de programação funcionais como Haskell, ML e Mathematica possuem uma sintaxe especial para expressar padrões de árvore e uma construção na linguagem para execução condicional. Por questões de simplicidade e eficiência, tais padrões de árvore carecem algumas das funcionalidades disponíveis em expressões regulares. Padrões primitivosO padrão mais simples em um casamento de padrões é um valor explícito (literal) ou uma variável. Por exemplo, considerando uma simples definição de função em Haskell: f 0 = 1 Aqui, o parâmetro f n = n * f (n-1) Aqui, o argumento Padrões de árvorePadrões mais complexos podem ser construídos a partir de primitivos, geralmente da mesma forma que os valores são construídos ao combinar outros valores. A diferença é que o padrão não é construído em um único valor, mas sim um grupo de valores. Um padrão de árvore descreve uma parte de uma árvore ao começar com um nó e especificando alguns galhos. Em Haskell, a seguinte linha define um tipo de dado algébrico data Color = ColorConstructor Integer String O construtor é um nó em uma árvore, o inteiro e a cadeia de caracteres são folhas em galhos. Quando quer-se escrever funções para fazer de integerPart (ColorConstructor theInteger _) = theInteger Ou para a cadeia de caracteres: stringPart (ColorConstructor _ theString) = theString Relacionamento com cadeias de caracteresO uso mais comum de casamento de padrões envolve cadeias de caracteres. Em várias linguagens de programação, uma sintaxe particular de cadeias de caracteres é usada pra representar expressões regulares, que são padrões para descrever cadeias de caracteres. Em linguagens funcionais de modo geral, cadeias de caracteres são representadas como listas de caracteres. De forma funcional, elas são definidas como uma lista vazia, ou um elemento anexado a uma lista existente. Em Haskell: [] -- uma lista vazia x:xs -- um elemento x anexado em uma lista xs A estrutura de uma lista é então primeiro_elemento (elemento:lista) = elemento é assegurado que o primeiro elemento do argumento de primeiro_elemento (elemento:_) = elemento Ver também |