Dostępny jest też specjalny symbol uniwersalny, pasujący do każdego obiektu – w wielu językach jest to podkreślnik.

Na przykład (w OCamlu) zamianę wartości liczbowej na ciąg znaków z użyciem dopasowania można zrealizować następująco:

match liczba with 0 -> "zero" | 1 -> "jeden" | 2 -> "dwa" | _ -> "inna liczba"

To samo można uzyskać instrukcją warunkową:

if liczba = 0 then "zero" else if liczba = 1 then "jeden" else if liczba = 2 then "dwa" else "inna liczba"

Jednak zapis jest bardziej rozwlekły i mniej czytelny.

Jeszcze inny przykład wykorzystujący konstruktory list; zapis x::lista oznacza doklejenie na początek listy elementu x, wynikiem jest nowa lista. match zmienna with [] -> "Lista jest pusta" | x::[] -> "Lista ma jeden element: " ^ x | x::y::[] -> "Lista ma dwa elementy: " ^ x ^ " i " ^ y | x::y::z::[] -> "Lista ma trzy elementy: " ^ x ^ ", " ^ y ^" i " ^ z | x::y::z::_ -> "Lista ma więcej niż trzy elementy: " ^ x ^ ", " ^ y ^", " ^ z ^ "..."

Można przekształcać symbole w inne wyrażenia (OCaml, kod z texvc): let get_encoding = function UTF8 -> "\\usepackage{ucs}\n\\usepackage[utf8]{inputenc}\n" | LATIN1 -> "\\usepackage[latin1]{inputenc}\n" | LATIN2 -> "\\usepackage[latin2]{inputenc}\n"

Kategoria:Algorytmy tekstowe