欢迎!请访问关于页面以获取更多关于如何使用本站的信息。
从理论角度来看,Map和一元函数之间并没有真正的区别
您对函数实现Map接口有什么看法?这会有用吗?如果是这样的想法,但你们决定不这样做,为什么?我很乐意了解您们的思考过程
将事物做成函数有很大的实用性,因为这是实现“可以调用的东西”的主要抽象方式。将函数转换为数据(Map)的实用性要小得多。你无法像处理数据那样轻松地读取/打印它们,通常无法将它们与其他数据进行组合等。此外,虽然所有Map都可以作为查找函数来调用,但并不是所有函数都可以作为Map来调用,因此这只能应用到函数的狭窄子集。所以,我认为这并不实用,我看不到从中获得的任何好处。
你正在尝试解决什么问题?
从语义上讲,Map的一些属性无法投影到函数中。Map有元素计数,允许枚举包含的所有元素,这是无法通过函数实现的。
我看到的另一个缺点是get的不确定性复杂度。目前,当在Map上调用get时,你可以期待操作相对较快。在(get itentity 1000)的情况下是成立的,在(get #(do (Thread/sleep %) %) 1000)的情况下则不成立。我喜欢Clojure的可预测执行时间,如conj,它保证是O(1),但并不保证元素会被插入到coll的末尾。
get
(get itentity 1000)
(get #(do (Thread/sleep %) %) 1000)
conj