In other languages with pattern matching you often have some sort of wildcard that you can match against. Either an explicitly named variable or, commonly, an underscore (`_`) if the value is unused. Example in erlang:<p><pre><code>  foo(bar) -&gt; baz;
  foo(X)   -&gt; bang.
</code></pre>
The X is an explicit variable that will match anything not already matched in previous patterns. It can also be used. (NB: Erlang pattern matching is the same or essentially the same for this discussion at each possible level, whether in a function declaration as above or a case statement or when receiving messages.)<p>Here, we don&#x27;t care about the thing we&#x27;ve named with an underscore:<p><pre><code>  tail([_|Tail]) -&gt; Tail.
</code></pre>
In Erlang, `[1|[2,3]]` is equivalent to the list `[1,2,3]`. So `[H|T]` as a pattern would have `H = 1` and `T = [2,3]`. Since we don&#x27;t care about the head of the list, we name it with _. Optionally, in Erlang, you can give it a fuller name:<p><pre><code>  tail([_Head|Tail]) -&gt; Tail.
</code></pre>
The compiler knows that _Head is supposed to be unused and won&#x27;t complain (warning about unused variables).<p><pre><code>  tail([Head|Tail]) -&gt; Tail.
</code></pre>
Would give a warning.