[erlang-questions] learning Erlang: factoring primes

Robert Virding robert.virding@REDACTED
Mon May 7 23:28:36 CEST 2007

Bjorn Gustavsson wrote:
> ok <ok@REDACTED> writes:
>> In fact I just made this "mistake" in the improved factorising code I
>> posted.  My excuse is that Erlang, which came *after* Prolog and which
>> uses Prolog-based syntax, gets =:= and == completely back-to-front from
>> the way Prolog has them.  In Prolog, == means "exact identity" and
>> =:= means "numerically equal after evaluation".  I cannot imagine why
>> Erlang swapped them.  I keep on tripping up over this.
> I think that the reason is that floats was not originally in the Erlang
> language, but was added later.

Originally it was that. When floats were introduced we had a LONG 
discussion on whether to have automatic type conversion of numbers for 
numerical operators or not. Eventually we decided to do this and then it 
was natural to do that in comparisons as well. Then we found we needed 
the exact comparison to use in matching so it was added as an operator 
available to users.

In retrospect we should have added the whole spectrum of term comparison 
  operators and given them a uniform appearance. Perhaps something like 
@==, @/=, @<, @=<, @>, @>=.

We took alot from Prolog so why did we not use '\' in operators but use 
'/'. Good question, next question.

I am still not 100% certain that having automatic type conversion of 
numbers was a Good Thing. I know everyone else (or at least most) do it 
and that it is usually convenient, but still ....

At least that is how I remember it.


> /Björn

More information about the erlang-questions mailing list