Ответ 1
==
проверяет математическую эквивалентность. =
с числами проверяет эквивалентность способом, который агностик по размеру, где это применимо, но строг относительно представления:
user> (= (float 1.0) (double 1.0))
true
user> (= (int 1) (byte 1))
true
user> (= (int 1) (double 1))
false
user> (= 0.5 (/ 1 2))
false
user> (== 0.5 (/ 1 2))
true
предположительно, рассуждение состоит в том, что представление о плавающей точке может потерять точность и не должно рассматриваться как эквивалентное интегральным или точным представлениям.