From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id VAA04295; Fri, 23 Apr 2004 21:53:23 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id VAA04484 for ; Fri, 23 Apr 2004 21:53:22 +0200 (MET DST) Received: from calmail-cl.berkeley.edu (mailfarm.Berkeley.EDU [128.32.61.106]) by nez-perce.inria.fr (8.12.10/8.12.10) with ESMTP id i3NJrKjq018233 for ; Fri, 23 Apr 2004 21:53:20 +0200 Received: from [64.162.212.212] (HELO tallman.kefka.frap.net) by calmail-cl.berkeley.edu (CommuniGate Pro SMTP 4.1.8) with SMTP id 20083751; Fri, 23 Apr 2004 12:53:19 -0700 Received: by tallman.kefka.frap.net (sSMTP sendmail emulation); Fri, 23 Apr 2004 12:52:06 -0700 Date: Fri, 23 Apr 2004 12:52:06 -0700 From: Kenneth Knowles To: John Goerzen Cc: caml-list@inria.fr Subject: Re: [Caml-list] [ANN] The Missing Library Message-ID: <20040423195206.GA27257@tallman.kefka.frap.net> References: <20040423185148.GA4434@excelhustler.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20040423185148.GA4434@excelhustler.com> User-Agent: Mutt/1.5.6i X-Miltered: at nez-perce by Joe's j-chkmail ("http://j-chkmail.ensmp.fr")! X-Loop: caml-list@inria.fr X-Spam: no; 0.00; knowles:99 caml-list:01 extlib:01 2004:99 api:01 quux:01 quux:01 hash:01 hash:01 api:01 subparts:01 findlib:01 beforehand:01 criticism:01 ocamlopt:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk I assume you are aware the two ExtLib libraries that are also "missing" standard library functionality? I can't help but suggest some cooperation between your three efforts to make one very well designed extended standard library (under a new name that is more "positive," and not conflicting with another project) Kenn On Fri, Apr 23, 2004 at 01:51:48PM -0500, John Goerzen wrote: > Hello, > > Some of you may remember my complaints about missing functions in the > standard library. To help address those, I have started work on my own > OCaml library to augment the standard functions. You can obtain it, > along with online API docs covering every function, at: > > gopher://quux.org/1/devel/missinglib > > or > > http://quux.org/devel/missinglib > > [Debian users: I have uploaded it to sid, but will take a few days to > appear.] > > Some excerpts from the README: > > Missinglib is a collection of OCaml-related utilities. The following > modules are are provided: > > ConfigParser System for parsing configuration files > Hashtbloper Hash table convenience operators > Hashtblutil Hash table utilities > Lexingutil Lexing-related utilities > Listutil List-manipulation utilities > Slice Underlying API for Slice operators > Sliceoper Flexible subparts of arrays, lists, and strings > Streamutil Stream parser utilities > Strutil String-related utilities > > The entire library has no prerequisites save the OCaml standard library and > findlib and is designed to install without complexity on a variety of > systems. It could also easily be embedded within your own source trees > so that users need not have it installed beforehand. > > ---------- > > I would greatly appreciate constructive criticism on any aspect of the > package, especially the build system. I have tried to make it possible > to "make; make install" on just about any platform, regardless of > availability of ocamlopt. It took some hoop-jumping, though, so > suggestions are welcome :-) > > Some basic info on the modules present: The ConfigParser module can read > and write sectioned .INI-style files and is mostly compatible with > Python's ConfigParser module. Sliceoper defines some more powerful ways > of indexing arrays, lists, and strings (some of these concepts were > discussed on this list). Strutil provides functions like strip, lstrip, > and rstrip (removes whitespace from either end, beginning, or end, of a > string). Listutil provides a "replace" that is analogous to > Hashtbl.replace, but for association lists; and "sub" that is similar to > String.sub or Array.sub. Hashtbloper defines some more useful ways of > working with hash tables, such as: > > hash /> 5 > > is the same as: > > Hashtbl.find hash 5 > > let sections = Hashtbl.create 5;; > let options = Hashtbl.create 5;; > Hashtbl.replace options "option1" "value1";; > Hashtbl.replace sections "section1" options;; > sections /> "section1" /> "option1";; > returns "value1" > > let newhash = hash // ("key", "value");; > > (Copies hash, adds the pair to the copy, and returns it -- similar > in concept to :: for lists) > > BTW, is this list the right place for a message like this? > > -- John > > ------------------- > To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr > Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners