为什么clojure里pop和peek对vectors和lists操作相反?

20 views
Skip to first unread message

池塘仙人

unread,
May 1, 2012, 12:47:52 PM5/1/12
to CN-Clojure
不统一
这不科学啊

Shen, Feng

unread,
May 1, 2012, 7:14:43 PM5/1/12
to cn-cl...@googlegroups.com
vector增删在头贵, list便宜。


Best Regards
Shen Feng 


2012/5/2 池塘仙人 <yourna...@gmail.com>
不统一
这不科学啊

池塘仙人

unread,
May 2, 2012, 8:23:21 AM5/2/12
to CN-Clojure
这不就依赖于实现了么,list如果是双向链表或者ArrayList,就不对了呀,这成了抽象依赖具体,典型坏味道啊

On May 2, 7:14 am, "Shen, Feng" <shen...@gmail.com> wrote:
> vector增删在头贵, list便宜。
>
> Best Regards
> Shen Feng
>

> 2012/5/2 池塘仙人 <yourname1...@gmail.com>
>
>
>
>
>
>
>
> > 不统一
> > 这不科学啊

Liutos

unread,
May 2, 2012, 8:37:02 AM5/2/12
to cn-cl...@googlegroups.com
可是如果想要抽象的话,干嘛还要在意在头在尾呢,使用对应功能的函数进行操作就好啦~
--
Liutos Love Linux LaTeX Lisp Ling

我的GitHub主页:https://github.com/Liutos

刘典

unread,
May 2, 2012, 9:58:26 AM5/2/12
to cn-cl...@googlegroups.com
非常统一, 他们都是从效率最高那个位置取元素. 
On 2012-5-2, at 上午12:47, 池塘仙人 wrote:

> 不统一
> 这不科学啊

Shen, Feng

unread,
May 2, 2012, 10:23:13 AM5/2/12
to cn-cl...@googlegroups.com
  赞!
Best Regards
Shen Feng 


2012/5/2 刘典 <these...@gmail.com>
360.gif

池塘仙人

unread,
May 2, 2012, 10:49:04 AM5/2/12
to CN-Clojure
不在意头尾的话,怎么做栈和队列?单纯用效率来定位?那效率一样的情况呢(比如vector的peek)?随机?那乱套了吧,不随机?那就有另一套抽象
了,两个抽象混合也很恶心吧,不如单纯头或尾的抽象

Ni HuaJie

unread,
May 2, 2012, 11:12:05 AM5/2/12
to cn-cl...@googlegroups.com
额,我不大明白楼主的目的到底是要什么?
是指vector 和list 一定要套用同一个template 模式么?

但是用多态去理解这种设计也没有什么可以指摘的地方啊,不同的对象有不一样的behavior 不是一件很正常的事儿么?

非常好奇楼主纠结的是什么样的场景,求介绍,来帮助我的理解。

不胜感谢

Robert Luo

unread,
May 6, 2012, 12:20:48 AM5/6/12
to cn-cl...@googlegroups.com
如果用 OO 的思想来理解的话,pop 和 peek 是 stack堆栈的接口。

堆栈是什么?后入先出。推入的操作是 conj ,对应一般的 push。所以只要 pop 和 peek 都看到的是最后 conj 的那个元素,这就是一个合格的堆栈。如果你只想要一个堆栈的话,那无论是 list 还是 vector 都没有问题,仅仅在构造对象的时候需要决定具体的实现,任何其他地方都只用使用抽象,这种思想就叫做面向对象。Clojure 在核心库语法上不使用 OO 的可变数据封装,并不意味着它排斥 OO 思想。 

更具体的分析可以参考 The Joy Of Clojure.

On Wednesday, May 2, 2012 12:47:52 AM UTC+8, 池塘仙人 wrote:
不统一
这不科学啊

James Xu

unread,
May 6, 2012, 6:37:22 PM5/6/12
to cn-cl...@googlegroups.com
这个分析有理
Reply all
Reply to author
Forward
0 new messages