Ответ 1
Самое большое преимущество =:=
заключается в том, что он возвращает true только для тех же терминов, что и для сопоставления с образцом. Поэтому вы можете быть уверены, что они такие же. 1
и 1
- те же термины, а 1
с 1.0
- нет. Это. Если вы пишете функцию типа foo(A, B) when A =:= B -> A.
и bar(A, B) when A =:= B -> B.
, они будут вести себя одинаково. Если вы используете ==
, это не будут те же функции. Это просто предотвращает неожиданность. Например, если вы создадите некоторое хранилище ключей/значений, это будет неправильно, если вы сохраните значение с помощью ключа 1
, а затем получите это значение, если запросите ключ 1.0
. И да, есть небольшое снижение производительности с ==
, но наименьшее удивление гораздо важнее. Просто используйте =:=
и =/=
, когда вы намерены сравнивать одинаковые термины. Используйте ==
и /=
только в том случае, если вы намерены сравнивать числа.