Os padrões têm a mesma aparência que os termos - podem ser literais simples como átomos e números, compostos como tuplas e listas ou uma mistura de ambos. Eles também podem conter variáveis, que são strings alfanuméricas que começam com uma letra maiúscula ou sublinhado. Uma "variável anônima" especial, _ (o sublinhado) é usada quando você não se importa com o valor a ser correspondido e não o usará.
Um padrão corresponde se tiver a mesma "forma" do termo que está sendo correspondido e os átomos encontrados forem os mesmos. Por exemplo, as seguintes correspondências tiveram sucesso -
- B = 1.
- 2 = 2.
- {ok, C} = {ok, 40}.
- [H | T] = [1, 2, 3,4].
Observe que, no quarto exemplo, a barra vertical (|) significa o início e o fim da lista, conforme descrito em Termos. Observe também que o lado esquerdo deve corresponder ao lado direito, o que é normal para os padrões.
Os exemplos a seguir de correspondência de padrões falharão.
- 1 = 2.
- {ok, A} = {falha, "Não sei a pergunta"}.
- [H | T] = [].
No caso do operador de correspondência de padrões, uma falha gera um erro e o processo é encerrado. Como isso pode ser interceptado e tratado é abordado em Erros. Os padrões são usados para selecionar qual cláusula de uma função será executada.