欢迎!请参阅关于页面了解有关此方法的更多信息。
从理论上讲,Map和1参数函数之间实际上并没有区别
您认为将函数实现为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