函数调用下面的低级操作是什么?
当我们从Clojure调用函数时会生成什么样的Java代码?
我想知道它的细节,以便我可以编写更多以性能为中心的代码.
在clojure中,作为函数调用的任何东西都必须实现clojure.lang.IFn接口.此接口包含一个名为的重载方法invoke.函数在Clojure中是一流的,所以当你说(def square (fn [x] (* x x))),square被分配给实现的类的实例IFn.
总而言之:在Clojure中调用函数会导致在对象上调用方法的成本.