Apart from the fact that =:=
prevents unwanted integer casts:
1> 1=:=1.0.
false
What is the advantage of using =:=
with terms in general?
Better performance?
Apart from the fact that =:=
prevents unwanted integer casts:
1> 1=:=1.0.
false
What is the advantage of using =:=
with terms in general?
Better performance?
The biggest advantage of
=:=
is it returns true only for same terms in the same way as pattern matching. So you can be sure they are same.1
and1
are same terms and1
with1.0
are not. That's it. If you write function likefoo(A, B) when A =:= B -> A.
andbar(A, B) when A =:= B -> B.
they will behave same. If you use==
it will not be same functions. It simply prevents surprise. For example, if you make some key/value storage it would not be right if you store value with key1
and then get this value if ask for key1.0
. And yes, there is a little bit performance penalty with==
but least astonishment is far more important. Just use=:=
and=/=
when it is your intent to compare same terms. Use==
and/=
only if it is your intent to compare numbers.Eshell V5.9.3.1 (abort with ^G)
1> 1.0==1.
true
2> 1.0=:=1.
false
3>
see it? when go with"==" it will tranfer the two element into the same format to match. when "=:=" do not ,when the two element is same-type and same-value will be returning true.