[erlang-questions] What is wrong with this list?

Peter K Chan <>
Wed Sep 5 00:26:58 CEST 2007


As someone who has known Erlang for a while, the error message would probably not be helpful (if even possible). But as a newbie, knowing the difference between an assignment and a match can be very helpful. Actually, if the bad match comes from some deep recursion, I think I would appreciate seeing the actual value, even if I know what badmatches in general are.

I do agree that the current error message gives out enough information for debugging purpose, but having seen, more than once, where someone is confused about the matching vs. assignment, I think the more explicit error message would be "nice" to have.


From: Dustin Sallings [mailto:] 
Sent: Tuesday, September 04, 2007 4:47 PM
To: Peter K Chan
Subject: Re: [erlang-questions] What is wrong with this list?

On Sep 4, 2007, at 13:29 , Peter K Chan wrote:

I think it would be nice if the compiler can output why a match fails (e.g. {number, 1} does not equal {atom, java}).

	This could work as an error string along with the badmatch for the single case discussed, but what about a case (that is contrived, but probably similar to real code I've written somewhere) like this:

	Pid = some_function(),
	Pid = other_function().

	The error message wouldn't be all that useful to you either way because on the first line you're capturing a value into a variable, and on the second line you're validating the same Pid is returned.  If it showed you the value, it'd probably be meaningless to you.  It would basically be showing you two different values and saying they're not the same.

	You have the same issue in a case, receive, function definition, etc... for which you have no matching case.  You don't want to list every possible pattern.

Dustin Sallings

More information about the erlang-questions mailing list