虽然我可能错误地解释了同音性的概念,但我将其理解为“代码即数据”。
所以,我可以这样写代码:
(def subject "world")
(def helo '(str "Hello " subject))
此时,helo
只是数据,但可以像这样执行代码:
(eval helo)
返回“Hello world”。
我还可以继续helo
当作数据来对待:
(first helo)
(count helo)
分别返回str
和3
。
到目前为止,一切都很好。但是,一旦我将代码包装在一个函数中,我似乎就失去了将代码视为数据的能力:
(defn helofn [subject]
(str "Hello " subject))
我该如何分解helofn
?看来我不能把它当作数据;如果我这样做:
(count helofn)
我得到一个例外:
java.lang.UnsupportedOperationException:此类型不支持计数:user$helofn
是否有另一种分解方法helofn
,或者我只是对同音性期望过高?