From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=AWL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by yquem.inria.fr (Postfix) with ESMTP id 5F6E3BBAF for ; Thu, 20 Nov 2008 22:12:17 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8DAG9hJUnCpx6wZGdsb2JhbACTTBoLCgYSvUqCfA X-IronPort-AV: E=Sophos;i="4.33,639,1220220000"; d="scan'208";a="20196876" Received: from concorde.inria.fr ([192.93.2.39]) by mail1-smtp-roc.national.inria.fr with ESMTP; 20 Nov 2008 22:12:17 +0100 Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id mAKLCGPS008261 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Thu, 20 Nov 2008 22:12:17 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8DAG9hJUnCpx6wZGdsb2JhbACTTBoLCgYSvUqCfA X-IronPort-AV: E=Sophos;i="4.33,639,1220220000"; d="scan'208";a="20196875" Received: from smtpmin.univ-orleans.fr (HELO min.univ-orleans.fr) ([194.167.30.176]) by mail1-smtp-roc.national.inria.fr with ESMTP; 20 Nov 2008 22:12:16 +0100 Received: from smtps.univ-orleans.fr (localhost [127.0.0.1]) by min.univ-orleans.fr (Postfix) with ESMTP id 2B0D212B4CA for ; Thu, 20 Nov 2008 22:12:16 +0100 (CET) Received: from [192.168.0.12] (ras75-4-82-235-58-110.fbx.proxad.net [82.235.58.110]) by smtps.univ-orleans.fr (Postfix) with ESMTP id 2D70636E60 for ; Thu, 20 Nov 2008 22:12:20 +0100 (CET) Subject: Re: [Caml-list] Wanted: your feedback on the hierarchy of OCaml Batteries Included From: David Teller To: OCaml In-Reply-To: <1227002178.6170.25.camel@Blefuscu> References: <1227002178.6170.25.camel@Blefuscu> Content-Type: text/plain Date: Thu, 20 Nov 2008 22:12:20 +0100 Message-Id: <1227215540.7676.23.camel@Blefuscu> Mime-Version: 1.0 X-Mailer: Evolution 2.12.1 Content-Transfer-Encoding: 7bit X-Miltered: at concorde with ID 4925D2B1.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; ocaml:01 univ-orleans:01 off-list:01 submodules:01 cheers:01 lexers:01 ocaml:01 monadic:01 mutable:01 bigarray:01 enum:01 hashtbl:01 bool:01 buffer:01 uchar:01 Dear list, Feedback from active members of the list (and a few other shy people who seem to prefer answering off-list:)) seems to indicate that Batteries shouldn't have a general hierarchies of modules but rather a flat list of modules with a few submodules here and there, along with a documentation allowing navigation by topics. While that's not my personal judgement, I'm willing to go along. So here's a reworked map of the library, along with a few placeholders to get an idea of where upcoming modules will fit. Text version follows and html version available on-line: http://dutherenverseauborddelatable.wordpress.com/2008/11/20/ocaml-batteries-included-the-hierarchy-reloaded/ . While I personally find this solution a little clumsier than the previous hierarchy, ymmv. Again, feedback is appreciated. If anyone is willing to work on a solution for linking documentation from third-party libraries into one transparent source, as suggested by Richard Jones, please contact me. I'm sure it is feasible, with a (un)healthy dose of JavaScript, but I'm not sure that current members of Batteries have enough brainpower available to work on this on top of Batteries. Cheers, David Batteries (pack) 1. Standard (automatically opened) 2. Legacy A. Arg B. Array C. ... 3. Future (things that should become standard eventually) A. Lexers I. C II. OCaml ===== I. Control ===== 4. Exceptions 5. Return 6. Monad (Interfaces for monadic operations ) ==== I.1. Concurrency ==== 7. Concurrency (Interfaces for concurrency operations) === I.1.i. Built-in threads === 8. Condition 9. Event 10. Mutex 11. RMutex 12. Thread 13. Threads (A module containing aliases to Condition, Event...) === I.1.ii. coThreads === 14. CoCondition 15. CoEvent 16. CoMutex 17. CoRMutex 18. CoThread 19. CoThreads (as Threads but with implementations coming from coThreads) === I.1.iii. Shared memory === 20. Shm_* (Placeholders) ===== II. IO ===== 21. IO A. BigEndian 22. Codec (common interfaces for compressors/decompressors) 23. GZip 24. Bz2 25. Zip 26. Transcode (Unicode transcoding) ===== III. Mutable containers ===== 27. Array A. Cap I. ExceptionLess II. Labels B. ExceptionLess a. Labels 28. Bigarray A. Array1 B. Array2 a. Array3 29. Dllist 30. Dynarray 31. Enum A. ExceptionLess a. Labels 32. Global 33. Hashtbl A. Make I. ExceptionLess i. Labels ===== IV. Persistent containers ====== 34. Lazy 35. List A. ExceptionLess B. Labels 36. Map A. Make I. ExceptionLess II. Labels 37. Option A. Labels 38. PMap 39. PSet 40. RefList A. Index 41. Queue 42. Ref 43. Set A. Make I. ExceptionLess II. Labels 44. Stack 45. Stream ===== V. Data ===== 46. Unit ==== V.1. Logical ==== 47. Bool 48. BitSet ==== V.2. Numeric ==== 49. Numeric (Interfaces for number-related stuff) 50. Big_int 51. Common 52. Complex 53. Float 54. Int 55. Int32 56. Int64 57. Native_int 58. Num 59. Safe_float (placeholder) 60. Safe_int ==== V.3 Textual data ==== 61. Text (Definition of text-related interfaces) 62. Buffer 63. Char 64. UTF8 65. Rope 66. UChar 67. String 68. StringText (A module containing aliases to String and modified Char) 69. RopeText (As StringText but with implementations from Rope and UChar 70. UTF8Text (As StringText but with implementations from UTF8 and) UChar A. Labels ===== V. Distribution-related stuff ===== 71. Packages 72. Compilers ===== VI. Internals ===== 73. Gc 74. Modules 75. Oo A. Private 76. Weak A. Make ===== VIII. Network (placeholders) ===== 77. URL 78. Netencoding A. Base64 B. QuotedPrintable a. Q b. URL A. Html ==== VIII.1. Http ==== 79. Http 80. Http_client 81. Cgi_* 82. Httpd_* 83. MIME ==== VIII.2. Ftp ==== 84. Ftp_client ==== VIII.3. Mail ==== 85. Netmail 86. Pop 87. Sendmail 88. Smtp ==== VIII.4. Generic server ==== 89. Netplex_* ==== VIII.5. RPC ==== 90. Rpc_* ==== VIII.6. Languages ==== 91. Genlex 92. Lexing 93. CharParser 94. UCharParser 95. ParserCo A. Source 96. Parsing 97. Format 98. Printf 99. Str 100. PCRE (placeholder) 101. Scanf A. Scanning 102. SExpr ===== IX. System ===== 103. Arg 104. File 105. OptParse A. Opt a. OptParser b. StdOpt 106. Path 107. Shell 108. Unix A. Labels 109. Equeue X. Unclassified 110. Digest 111. Random A. State 112. Date (placeholder) On Tue, 2008-11-18 at 10:56 +0100, David Teller wrote: > For this purpose, I have posted a > tree of the current hierarchy on my blog [1]. > > [1] > http://dutherenverseauborddelatable.wordpress.com/2008/11/18/batteries-hierarchy/ -- David Teller-Rajchenbach Security of Distributed Systems http://www.univ-orleans.fr/lifo/Members/David.Teller Angry researcher: French Universities need reforms, but the LRU act brings liquidations.