Someone wrote: > Honestly, would you use a language which does not allow to program a > depth-first graph traversal in O(n). Ah. I didn't realize it was that bad. My understanding of Haskell is quite rudimentary. And yet, now that I think about it, I have never implemented a depth-first graph traversal except in university classes! I admit that I am not a very experienced programmer-- I have worked for about three years in the industry doing multiplatform GUI apps in C++, Internet utilities in C, C++ and Perl, cryptography and e-commerce in C and C++, some generic utility classes in C++ (doesn't _everyone_ do generic utilities for C++? :-) ), and intranet/internet management software in Perl for the banking industry. Also I've written a couple of games for my own amusement (including one in Turbo Pascal and one in an old 16-bit BASIC), and probably sundry other small projects. But I've yet to implement a graph structure of any sort (as far as I can remember) and then try to traverse it efficiently. For that matter I've never implemented a sorting algorithm except in University... Oh wait-- yes I did but it was a waste of time because it turned out that "n" was so small that O(n^2) was acceptable. Of course, graph traversal, sorting and such algorithms are extremely important to a lot of work, and in fact were necessary for some of what _I've_ done (specifically a GUI app which enabled the user to mark-up a bitmap image) but in those cases I used a pre-existing library, or a library developed by a co-worker. I suppose if my C++ utilities had evolved for long enough they would have soon included some computationally intensive algorithms, but as it was they consisted only of reference- counting utilities, string-manipulation utilities, unsorted arrays and so forth. I hope that my contributions to this forum are helpful. My understanding of Haskell is woefully primitive, but since the discussion had turned to "making it useful for the world's programmers" I thought my perspective might be useful. Regards, Zooko