Browse thread
[Caml-list] [ANN] The Missing Library
-
John Goerzen
-
Kenneth Knowles
- Alexander V. Voinov
-
John Goerzen
-
Maxence Guesdon
-
John Goerzen
- Maxence Guesdon
-
John Goerzen
-
Alain.Frisch@e...
-
John Goerzen
-
Alain.Frisch@e...
-
Nicolas Cannasse
-
Yamagata Yoriyuki
- Gerd Stolpmann
-
Nicolas Cannasse
-
Yamagata Yoriyuki
- Jacques GARRIGUE
- Nicolas Cannasse
-
Yamagata Yoriyuki
-
Yamagata Yoriyuki
-
Nicolas Cannasse
- oliver@f...
-
Alain.Frisch@e...
-
John Goerzen
- Henri DF
- Shawn Wagner
- james woodyatt
-
Alain.Frisch@e...
- Basile STARYNKEVITCH
-
John Goerzen
- Kenneth Knowles
- Florian Hars
-
Maxence Guesdon
- Eric C. Cooper
-
Kenneth Knowles
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Alexander V. Voinov <avoinov@z...> |
| Subject: | Re: [Caml-list] [ANN] The Missing Library |
Hi All,
Kenneth Knowles wrote:
>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)
>
>
I'd second this. For about a year now, I've been using one of these
extlibs, one which implements tail-recursive versions of the list
operations, and never looked back. Recently I had to install another
extlib because a package I need depends on it. This does not, of course,
increase maintanability and all other -bilities you may imagine.
Thank you!
Alexander
>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
>
>
>
-------------------
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