Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 为什么列表不能作为函数在clojure中获取其索引元素?_List_Clojure - Fatal编程技术网

List 为什么列表不能作为函数在clojure中获取其索引元素?

List 为什么列表不能作为函数在clojure中获取其索引元素?,list,clojure,List,Clojure,Vector和map可以充当从键获取其元素的函数 ([1 2 3] 2) ;=> 3 ({:a 1 :b 2} :a) ;=> 1 但为什么我不能这样做的名单 ('(1 2 3) 2) ;clojure.lang.PersistentList cannot be cast to clojure.lang.IFn(java.lang.ClassCastException) 我认为在这种情况下,错误消息是非常具有描述性的。持久列表不实现IFn,因此不能作为函数。这是Clojure的设

Vector和map可以充当从键获取其元素的函数

([1 2 3] 2) ;=> 3
({:a 1 :b 2} :a) ;=> 1
但为什么我不能这样做的名单

('(1 2 3) 2)
;clojure.lang.PersistentList cannot be cast to clojure.lang.IFn(java.lang.ClassCastException)

我认为在这种情况下,错误消息是非常具有描述性的。持久列表不实现IFn,因此不能作为函数。这是Clojure的设计选择,其原因可能是
List
数据结构不是为随机访问(通过索引获取元素)而设计的,因为此操作的复杂性是
O(n)
,这比vector的
O(log(n))

,我认为在这种情况下,错误消息非常具有描述性。持久列表不实现IFn,因此不能作为函数。这是Clojure的设计选择,其原因可能是
List
数据结构不是为随机访问(通过索引获取元素)而设计的,因为此操作的复杂性是
O(n)
,这比vector的
O(log(n))
可能重复的