[erlang-questions] Underscore prefixes

Joe Armstrong <>
Fri Apr 18 15:49:38 CEST 2008


_X behaves just like X as regards pattern matching. It is not an
anonymous variable like "_"

Thus {_X, _X} matches {a,a} but not {a,b}

The difference between X and _X shows up in the compiler diagnostics
for unused variables.
If X occurs only in a pattern and is never used, then the compiler
issues a warning.

If _X is used instead, then no warning is issued.

Thus in Dan's code if the io:format line is commented out there will
be no compiler warning. If the program
used Result instead of _Result then there would be a warning.

So use "_Var" in debug statements that are intended to be commented out.

/Joe Armstrong

On Fri, Apr 18, 2008 at 8:31 AM, Dan Gudmundsson <> wrote:
> My guess is debugging:
>
>    _Result = module:function(X),
>   io:format("DBG: ~p ~n", [_Result]),
>   {response, ok}.
>
>  Than you can delete the debug io:format.
>
>
>
>  Matthew Dempsky wrote:
>  > On Thu, Apr 17, 2008 at 7:13 PM, Vik Olliver <> wrote:
>  >> Underscores before a variable indicate it's basically optional, right?
>  >
>  > It simply tells the compiler not to issue a warning if the variable is
>  > not otherwise used.
>  >
>  >>  So why would someone do:
>  >>
>  >>  _Result = module:function(X),
>  >>  {response, ok}.
>  >>
>  >>  in their code?
>  >
>  > Style maybe.  When matching elements of a tuple, I'll often still
>  > write "_Foo" and "_Bar" (but actually meaningful names) even if I
>  > don't need those elements in case I later need to change the code and
>  > it saves me a little bit of time looking up what the other elements
>  > are again.
>  >
>  > This particular case though, it's kinda silly.  Obviously the return
>  > value of a function is its result. :-)
>  > _______________________________________________
>  > erlang-questions mailing list
>  > 
>  > http://www.erlang.org/mailman/listinfo/erlang-questions
>  >
>  _______________________________________________
>  erlang-questions mailing list
>  
>  http://www.erlang.org/mailman/listinfo/erlang-questions
>



More information about the erlang-questions mailing list