Что делает этот код clojure? - PullRequest
       0

Что делает этот код clojure?

1 голос
/ 05 октября 2011
(ns utils
   (:gen-class :name Utils
               :methods [#^{:static true} [sum [java.util.Collection] long]]))

(defn sum [coll] (reduce + coll))

(defn -sum [coll] (sum coll))

Пожалуйста, объясните этот код!

1 Ответ

5 голосов
/ 05 октября 2011

Не воспользовавшись средствами класса Clojure, мой ответ может быть немного нечетким:

Это сгенерирует необходимый байт-код, который примерно эквивалентен следующему псевдокоду Java:

class Utils {
  public static long sum(Collection coll) {
    // Here goes the necessary code to call  (sum coll)
    // through the Clojure runtime
  }
}
  • -sum инструктирует Clojure генерировать метод Java.
  • (sum coll) - это вызов первого определения sum, которое является просто обычным определением функции Clojure
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...