Я никогда не думал об этом, пока я не объяснял какой-то код-код для коллеги, который не был знаком с clojure. Я объяснял ему let
, когда он спросил, почему вы используете вектор, чтобы объявлять привязки, а не список. У меня на самом деле не было ответа на него. Но язык это ограничивает вас от использования списков:Зачем нужен вектор?
=> (let (x 1) x)
java.lang.IllegalArgumentException: let requires a vector for its binding (NO_SOURCE_FILE:0)
Почему именно это?
Я предполагаю, что это чисто для удобочитаемости, и, допустив применение вектора, просто обеспечивает сохранение идиомы. – MayDaniel
(Литеральный вектор требуется для почти всех макросов «let» и «with-».) – MayDaniel
Это вроде естественных законов. Вы можете рассуждать *, что это так, но не * почему *.Является ли настоящая причина этого решения читабельностью, некоторые реализации Схемы, конвенция или тип завтрака Богата в тот день остаются в темноте. Единственный, кто может ответить на этот вопрос, - это сам Рич. Для Clojure мы находимся в удачном положении, для вселенной .... – kotarak