I see.  In other words, BidirectionalGraph, etc. are "abstract views" and there is no way one would call a "BidirectionalGraph constructor" -- there's no such thing?  For example, in the documentation, one might say that a problem requires a "BidirectionalGraph".  This is short-hand for both the authors and the readers that the problem requires some data structure, types, etc.?

 "View" isn't quite the right word - more like "contract" - but otherwise, that's a fairly accurate description :)
 
Andrew Sutton
andrew.n.sutton@gmail.com