On 2011-03-25 05:41, spir wrote: > About D collections: aside std.container in Phobos, Steven Schweighoffer > has a fairly advanced project called dcollections: > http://www.dsource.org/projects/dcollections. As I understand it, it is a > bit of a concurrent for std.container, but there seems to be a possibility > for them to converge in the future. In any case, you should definitely > study it, if only to take inspiration and avoid double work.
dcollections is Steven Schweighoffer's project which has existed since D1. std.container is the container module for Phobos. So, they aren't, strictly speaking related. When designing std.container and planning out how containers should be done in Phobos, Andrei took a different approach than Steve did. So, nothing can be taken from dcollections and simply plopped into std.container. However, dcollections 2.0 does use the Boost license, so the code from there can be refactored to work in std.container. Steve already did that with RedBlackTree. He ported std.RedBlackTree from whatever his red-black tree implementation is in dcollections. So, if it makes sense, code can be taken from dcollections and ported to Phobos (and Steve would obviously be a good guy to talk to about that). However, anyone doing that needs to be aware of the differences in how dcollections works vs how std.container works (e.g. dcollections has cursors whereas std.container uses ranges exclusively). Regardless, a solid understanding of ranges is required to create containers for std.container. At the moment, the only good resources that I'm aware of for learning about them are Andrei's original article, the talk he did at BoostCon 2009 ( http://boostcon.blip.tv/ ) - though that's geared towards C++ - and by reading code. std.range and std.algorithm in particular are based heavily on ranges. We probably do need more articles on ranges though. I keep thinking that I should write one (since no one else has AFAIX), but I haven't gotten around to it. - Jonathan M Davis
