Это просто причуда, или есть какая-то фундаментальная концепция, которая подразумевает это?
vec преобразуется в вектор (nil становится пустым вектором), а вектор создает вектор с заданными элементами.
(vec nil) => [] (vector nil) => [nil]
вы могли бы ввести эти выражения в repl, чтобы увидеть ихрезультаты и почему они не равны.
user> (vec nil) ; => []
user> (vector nil) ; => [nil]
user> (= *1 *2) ; => false
Почему они должны быть равны?