欢迎!请查看关于页面,了解更多关于它是如何工作的信息。
从理论的角度来看,Map与一元函数之间并没有真正的区别
您如何看待函数实现Map接口?这将是有用的吗?如果考虑了这一点,但您认为不采取它,那为什么呢?我渴望了解这种思考过程
将事物转换为函数有很大的实用性,因为这是“你要调用的东西”的主要抽象。将函数转换为数据(Map)的实用性就小多了。你不能像数据一样轻松地阅读/打印它们,你不能通常地将它们与其他数据进行组合等。此外,虽然所有Map都可以作为查找函数调用,但并非所有函数都可以作为Map调用,因此它只能适用于一小部分函数。所以,我认为这不实用,我不认为从中可以得到任何好处。
你试图解决什么问题?
从语义上看,Map的一些特性是无法映射到函数的。Map有元素数量,允许遍历其包含的所有元素,这是函数无法做到的。
我认为的另一个缺点是get的不可预测复杂性。当前在map上调用get时,您可以预期操作相对较快。在(get itentity 1000)的情况下是如此,但是在(get #(do (Thread/sleep %) %) 1000)的情况下则不是。我喜欢Clojure的可预测执行时间,例如conj,它保证了操作时间复杂度为O(1),但并不保证元素会被插入到集合的末尾。
get
(get itentity 1000)
(get #(do (Thread/sleep %) %) 1000)
conj