On Wed, 23 May 2012 14:32:57 -0400, Roman D. Boiko <[email protected]> wrote:

On Wednesday, 23 May 2012 at 18:24:28 UTC, simendsjo wrote:
On Wed, 23 May 2012 20:18:54 +0200, simendsjo <[email protected]> wrote:

On Wed, 23 May 2012 17:05:21 +0200, Roman D. Boiko <[email protected]> wrote:

I need some immutable collections for my D Compiler Tools project, namely linked list, red-black tree, and possibly some others. So I'm going to create them for my use, and later generalize. I've created a project on GitHub, but didn't implement anything useful yet.

http://dlang.org/phobos/std_container.html#SList
http://dlang.org/phobos/std_container.html#RedBlackTree

And http://dsource.org/projects/dcollections

Those aren't immutable either :(

There is a very good reason however :)

I need tail-immutable and tail-const structs to be able to avoid "code pasting hell".

Until then, I feel very unmotivated to do anything regarding const and immutability.

FWIW, std.container.RedBlackTree is derived from dcollections.RBTree.

Regarding sharing structure, the class type would have to be specifically written to use this. It's not just slapping on immutable tags.

For at least RBTree, and my implementation of Hash, this would not be feasible.

Certainly ArrayList, LinkedList, and probably Deque, they could share structure

If you need a sorted tree structure that supports sharing immutable state, you likely have to find a different algorithm than redblack, since adding nodes can modify the tree structure via rotates.

-Steve

Reply via email to