Хотя я могу неправильно интерпретировать концепцию гомоконичности, я понял это как «код, являющийся данными».Можно ли разложить функцию Clojure?
Таким образом, я могу писать код, как это:
(def subject "world")
(def helo '(str "Hello " subject))
На данный момент, helo
только данные, но и может быть выполнен в виде кода, как это:
(eval helo)
, который возвращает «Привет мир ».
Я также могу продолжать рассматривать helo
как данные:
(first helo)
(count helo)
который возвращает соответственно str
и 3
.
Пока все хорошо. Однако, как только я обернуть код в функции, я, кажется, теряет способность лечить код как данные:
(defn helofn [subject]
(str "Hello " subject))
Как разлагаются helofn
? Кажется, что я не могу рассматривать его как данные; если я делаю это:
(count helofn)
я получаю исключение:
java.lang.UnsupportedOperationException: COUNT не поддерживается на этом типе: пользователь $ helofn
Есть еще один способ разложите helofn
, или я просто ожидаю слишком многого от гомоконичности?