Почему реализация вектора ``имеет несколько случаев?

Вот определение clojure дляvector:

(defn vector
  "Creates a new vector containing the args."
  {:added "1.0"
   :static true}
  ([] [])
  ([a] [a])
  ([a b] [a b])
  ([a b c] [a b c])
  ([a b c d] [a b c d])
  ([a b c d & args]
     (. clojure.lang.LazilyPersistentVector (create (cons a (cons b (cons c (cons d args))))))))

Почему так много случаев? Или, если их так много, почему нет больше?

Я предполагаю, что это обеспечивает баланс между эффективностью реализации и вероятностью, но я не совсем понимаю, как это было бы более эффективно.

14
задан Matt Fenwick 4 July 2012 в 11:37
поделиться