Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
March 24, 2005 MinTL dmd-119 update and arraylist enhancement | ||||
---|---|---|---|---|
| ||||
I've updated MinTL to work with dmd-119, though there could be a problem with MultiAA, which is an alias for Value[][Key]. The unittest fails when I try to concatenate onto the end of the Value[] array and set that back into the AA. I don't know what is going on with that so I'll have to check it out when I get more time. I also added some functions to ArrayList to allow it to be used like an array with capacity. I added the new read/write property capacity and added a setter for length. For those who don't know MinTL an ArrayList is an array with efficient insert/delete from the head and tail. Basically it is a circular array. By keeping the head at 0 it becomes an array with capacity. I decided the tradeoff of reusing ArrayList is better than inventing a whole new type for tracking capacity. Available from the usual place http://home.comcast.net/~benhinkle/mintl/ |
March 26, 2005 Re: MinTL dmd-119 update and arraylist enhancement | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ben Hinkle | "Ben Hinkle" <ben.hinkle@gmail.com> wrote in message news:d1tdnp$109m$1@digitaldaemon.com... > I've updated MinTL to work with dmd-119, though there could be a problem with MultiAA, which is an alias for Value[][Key]. The unittest fails when I try to concatenate onto the end of the Value[] array and set that back into the AA. I don't know what is going on with that so I'll have to check it out when I get more time. posted bug report with AAs indexed by double. > I also added some functions to ArrayList to allow it to be used like an array with capacity. I added the new read/write property capacity and added a setter for length. For those who don't know MinTL an ArrayList is an array with efficient insert/delete from the head and tail. Basically it is a circular array. By keeping the head at 0 it becomes an array with capacity. I decided the tradeoff of reusing ArrayList is better than inventing a whole new type for tracking capacity. After mulling over some MinTL behaviors that had grown to bug me, I've made some changes that break backwards compatibility. They are 1) removed seq and util modules and moved the contents elsewhere. Results in fewer modules needed to do basic stuff 2) made ArrayList resize automatically instead of throwing an error when the backing array is full 3) switched all (integer) indexing and length to use size_t instead of ints and uints. I've update the zip file with these changes. |
March 27, 2005 list? Re: MinTL dmd-119 update and arraylist enhancement | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ben Hinkle | Should the following two commonly used methods be added into mintl/list.d ? Value first() { return head.data; } Value last() { return tail.data; } |
March 27, 2005 Re: list? Re: MinTL dmd-119 update and arraylist enhancement | ||||
---|---|---|---|---|
| ||||
Posted in reply to bug | <bug@d.com> wrote in message news:d25bth$174i$1@digitaldaemon.com... > Should the following two commonly used methods be added into mintl/list.d ? > > Value first() { return head.data; } > Value last() { return tail.data; } Maybe, but the same thing is x[0] and x[x.length-1], just like arrays. Typing ".last" is shorter than "[x.length-1]" but that is the only advantage I can see and that wasn't enough of an advantage to me to add them. But I'll think about it. |
March 27, 2005 Re: list? Re: MinTL dmd-119 update and arraylist enhancement | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ben Hinkle | In article <d26a9f$26cr$1@digitaldaemon.com>, Ben Hinkle says... > ><bug@d.com> wrote in message news:d25bth$174i$1@digitaldaemon.com... >> Should the following two commonly used methods be added into mintl/list.d ? >> >> Value first() { return head.data; } >> Value last() { return tail.data; } > >Maybe, but the same thing is x[0] and x[x.length-1], just like arrays. Typing ".last" is shorter than "[x.length-1]" but that is the only advantage I can see and that wasn't enough of an advantage to me to add them. But I'll think about it. I think in the implementation, the actual pointer to head/tail is cached, so x[0] take same time as first(), but x[x.length-1] will take O(N) instead of O(1)! |
March 27, 2005 Re: list? Re: MinTL dmd-119 update and arraylist enhancement | ||||
---|---|---|---|---|
| ||||
Posted in reply to bug | <bug@d.com> wrote in message news:d26v7a$2rdm$1@digitaldaemon.com... > In article <d26a9f$26cr$1@digitaldaemon.com>, Ben Hinkle says... >> >><bug@d.com> wrote in message news:d25bth$174i$1@digitaldaemon.com... >>> Should the following two commonly used methods be added into >>> mintl/list.d >>> ? >>> >>> Value first() { return head.data; } >>> Value last() { return tail.data; } >> >>Maybe, but the same thing is x[0] and x[x.length-1], just like arrays. >>Typing ".last" is shorter than "[x.length-1]" but that is the only >>advantage >>I can see and that wasn't enough of an advantage to me to add them. But >>I'll >>think about it. > > I think in the implementation, the actual pointer to head/tail is cached, > so > x[0] take same time as first(), but x[x.length-1] will take O(N) instead > of > O(1)! For doubly-linked lists the length is cached, too. So to look up x[n] it starts from the head if n < length/2 and the tail if n > length/2. For singly-linked lists the length isn't cached and so there is the property tailList that returns a single-item slice for the tail item. |
Copyright © 1999-2021 by the D Language Foundation