私はhomoiconicityの概念を誤って解釈するかもしれませんが、私はそれを 'code being data'と理解しています。Clojure関数を分解することは可能ですか?
だから、私はこのようなコードを記述することができます:helo
はデータのみであるが、このようなコードとして実行することができ、この時点で
(def subject "world")
(def helo '(str "Hello " subject))
を:「こんにちは、世界を返す
(eval helo)
"
私はまた、データとしてhelo
の治療のために続けることができます。
(first helo)
(count helo)
それぞれstr
と3
を返します。
これまでのところとても良いです。しかし、できるだけ早く私は、関数内のコードをラップするように、私は、データとしてコードを治療する能力を失っているように見える:
(defn helofn [subject]
(str "Hello " subject))
にはどうすればhelofn
を分解しますか?私はそれをデータとして扱うことはできないようです。私はこれを行う場合:別の方法があるようにされているユーザの$ helofn
:
java.lang.UnsupportedOperationExceptionが:このタイプではサポートされていないカウント
(count helofn)
私は例外を取得します
helofn
を分解するか、私は均質性からあまりにも多くを期待していますか?