А чем технически это отличается от присваивания, кроме формального описания? По сути же любое присваивание это уравнение двух «объектов»
во-первых, это отличается логически. присваивание значения в ячейку памяти меняет состояние ячейки. уравнение значений не говорит ничего про ячейки памяти, а только про значения (или формулы значений).
если Хаскель тяжеловат, посмотрите как это работает в Прологе.
ну и чисто технически присваивать можно много раз в разные моменты времени, а равенство постулируется единожды и на всё время исполнения программы