You can subscribe to this list here.
2003 |
Jan
|
Feb
(81) |
Mar
(97) |
Apr
(88) |
May
(80) |
Jun
(170) |
Jul
(9) |
Aug
|
Sep
(18) |
Oct
(58) |
Nov
(19) |
Dec
(7) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(22) |
Feb
(9) |
Mar
(28) |
Apr
(164) |
May
(186) |
Jun
(101) |
Jul
(143) |
Aug
(387) |
Sep
(69) |
Oct
(14) |
Nov
(8) |
Dec
(99) |
2005 |
Jan
(10) |
Feb
(34) |
Mar
(24) |
Apr
(7) |
May
(41) |
Jun
(20) |
Jul
(3) |
Aug
(23) |
Sep
(2) |
Oct
(26) |
Nov
(41) |
Dec
(7) |
2006 |
Jan
(6) |
Feb
(3) |
Mar
(11) |
Apr
|
May
|
Jun
(5) |
Jul
(8) |
Aug
(20) |
Sep
|
Oct
(6) |
Nov
(5) |
Dec
|
2007 |
Jan
|
Feb
(1) |
Mar
|
Apr
(3) |
May
(2) |
Jun
|
Jul
|
Aug
(1) |
Sep
(7) |
Oct
(6) |
Nov
(19) |
Dec
(11) |
2008 |
Jan
|
Feb
(7) |
Mar
(9) |
Apr
(21) |
May
(42) |
Jun
(27) |
Jul
(28) |
Aug
(26) |
Sep
(16) |
Oct
(32) |
Nov
(49) |
Dec
(65) |
2009 |
Jan
(35) |
Feb
(20) |
Mar
(36) |
Apr
(42) |
May
(111) |
Jun
(99) |
Jul
(70) |
Aug
(25) |
Sep
(15) |
Oct
(29) |
Nov
(3) |
Dec
(18) |
2010 |
Jan
(10) |
Feb
(4) |
Mar
(57) |
Apr
(63) |
May
(71) |
Jun
(64) |
Jul
(30) |
Aug
(49) |
Sep
(11) |
Oct
(4) |
Nov
(2) |
Dec
(3) |
2011 |
Jan
(1) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(1) |
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2013 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2022 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
(1) |
2024 |
Jan
(1) |
Feb
(3) |
Mar
(6) |
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2025 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Markus M. <ma...@oe...> - 2003-10-05 11:11:14
|
Hi, one function that people may want to have in the standard library is "read_file", which opens a file with a given name and returns its complete contents as a string: --------------------------------------------------------------------------- let read_file name = let file = open_in name in let size = in_channel_length file in let buf = String.create size in begin try really_input file buf 0 size with exc -> begin try close_in file with _ -> () end; raise exc end; close_in file; buf --------------------------------------------------------------------------- This functions is optimal for files, because it uses the length of the file to determine the required buffer size. Note the following behaviour: if reading causes an exception, the program will attempt to close the opened file. If this also causes an exception, the FIRST exception will be reraised. I think this is the most reasonable way to handle this. Regards, Markus -- Markus Mottl http://www.oefai.at/~markus ma...@oe... |
From: Markus M. <ma...@oe...> - 2003-10-05 10:54:34
|
Hi, since we are at it (syntax flamewars): I'd also propose keeping the horizontal limit of source lines to 80 characters... Regards, Markus -- Markus Mottl http://www.oefai.at/~markus ma...@oe... |
From: Nicolas C. <war...@fr...> - 2003-10-05 10:27:03
|
> Hello, > > I have one question : > Is the unicode support of extlib, compatible with camomile ? > > Thank you for extlib ! > > Kind regard > Sylvain LE GALL Bonjour Sylvain, Since that author of Unicode for extlib is the same as camomile ( Yamagata Yoriyuki ) you should expect that they are compatible, but I'm not sure what you exactly mean by "compatible" :-) Please have a look at the ocamldoc on http://ocaml-lib.sf.net Nicolas Cannasse |
From: Nicolas C. <war...@fr...> - 2003-10-05 10:19:33
|
> function "input_all" in module Std is obviously not thread-safe due to > the use of a static buffer. Furthermore, it is not optimally efficient. > I'd propose the following patch: [...] It looks far more efficient :-) Thanks Markus, I think it's ok for you to commit the changes on the CVS. Nicolas Cannasse |
From: Sylvain LE G. <syl...@po...> - 2003-10-05 10:09:58
|
Hello, I have one question : Is the unicode support of extlib, compatible with camomile ? Thank you for extlib ! Kind regard Sylvain LE GALL |
From: Nicolas C. <war...@fr...> - 2003-10-05 09:58:15
|
Hi people ! Right now, SF downloads are showing that there is (only) around 60 peoples that downloaded the ExtLib (no counts on how many are actually using it :-). That's not big, because it's a challenge here : everybody agree that ExtLib is a good thing and that they should eventualy switch to it but since everybody is already using their own libraries, the switching cost can sometimes be quite high . To encourage people to use ExtLib, I thing the best way is to increase the added-value (from an user point of view) that ExtLib is providing. We need more code and several releases to bring people's attention on it. Any proposals for new features are welcome. IMHO, it would be useful to add support for Xml ( XmlLight : http://tech.motion-twin.com ) into the ExtLib. Other thing : a Debian ExtLib package will be available soon. Nicolas Cannasse |
From: Markus M. <ma...@oe...> - 2003-10-05 09:53:15
|
Hi, function "input_all" in module Std is obviously not thread-safe due to the use of a static buffer. Furthermore, it is not optimally efficient. I'd propose the following patch: Index: std.ml =================================================================== RCS file: /cvsroot/ocaml-lib/extlib-dev/std.ml,v retrieving revision 1.6 diff -r1.6 std.ml 43d42 < let static_buf = String.create buf_len 45,54c44,64 < let input_all ch = < let buf = Buffer.create 0 in < let rec loop() = < match input ch static_buf 0 buf_len with < | 0 -> Buffer.contents buf < | len -> < Buffer.add_substring buf static_buf 0 len; < loop() < in < loop() --- > let input_all ic = > let rec loop acc total buf ofs = > let n = input ic buf ofs (buf_len - ofs) in > if n = 0 then > let res = String.create total in > let pos = total - ofs in > let _ = String.blit buf 0 res pos ofs in > let coll pos buf = > let new_pos = pos - buf_len in > String.blit buf 0 res new_pos buf_len; > new_pos in > let _ = List.fold_left coll pos acc in > res > else > let new_ofs = ofs + n in > let new_total = total + n in > if new_ofs = buf_len then > loop (buf :: acc) new_total (String.create buf_len) 0 > else > loop acc new_total buf new_ofs in > loop [] 0 (String.create buf_len) 0 Regards, Markus -- Markus Mottl http://www.oefai.at/~markus ma...@oe... |
From: Nicolas C. <war...@fr...> - 2003-10-05 09:48:27
|
> since the INRIA-team has decided to avoid tabulators in sources, and > since I also think that this is good style, I'd propose that each tab > be replaced by (two) ordinary spaces. Any comments? We already have been discussed about that : Tabs are entirely my fault since there is no auto-tab on my windows editor (no flames here please). We concluded that the "working" sources can contains tabs but that once finalized we will switch from tabs to spaces ( 2 ou 4 , matter of taste ). Looks like this second point have been forgot before the release :-) Nicolas Cannasse |
From: Markus M. <ma...@oe...> - 2003-10-05 09:36:14
|
Hi, since the INRIA-team has decided to avoid tabulators in sources, and since I also think that this is good style, I'd propose that each tab be replaced by (two) ordinary spaces. Any comments? Regards, Markus -- Markus Mottl http://www.oefai.at/~markus ma...@oe... |
From: Richard J. <ri...@an...> - 2003-09-28 15:21:28
|
On Sun, Sep 28, 2003 at 02:50:56PM +0200, Nicolas Cannasse wrote: > > let readdir_all dirname = > > let is_dir path = > > let is_dir_lstat path = > > let copy_file src dest = > > let rec delete_directory path = > > Theses are looking useful but not complete, I think that we need a module > full a functions for file/directory access, creating , copying and moving. > If s/one is willing to write it.... (Partly as a reminder to myself ...) Perl has a useful "glob" command. eg: my @files = glob "/usr/local/lib/ftp/*.pl"; Returns a list of pathnames of all *.pl in that directory. Rich. -- Richard Jones. http://www.annexia.org/ http://freshmeat.net/users/rwmj Merjis Ltd. http://www.merjis.com/ - all your business data are belong to you. MONOLITH is an advanced framework for writing web applications in C, easier than using Perl & Java, much faster and smaller, reusable widget-based arch, database-backed, discussion, chat, calendaring: http://www.annexia.org/freeware/monolith/ |
From: Michal M. <mal...@pl...> - 2003-09-28 13:16:12
|
On Sun, Sep 28, 2003 at 02:50:56PM +0200, Nicolas Cannasse wrote: > > let readdir_all dirname = > > let is_dir path = > > let is_dir_lstat path = > > let copy_file src dest = > > let rec delete_directory path = > > Theses are looking useful but not complete, I think that we need a module > full a functions for file/directory access, creating , copying and moving. > If s/one is willing to write it.... One can look at python shutil module (for inspiration ;) http://python.org/doc/2.3.1/lib/module-shutil.html -- : Michal Moskal :: http://www.kernel.pl/~malekith : GCS {C,UL}++++$ a? !tv : When in doubt, use brute force. -- Ken Thompson : {E-,w}-- {b++,e}>+++ h |
From: Nicolas C. <war...@fr...> - 2003-09-28 12:49:55
|
> (** Some useful operators on int and double references. *) > let (+=) r i = r := !r + i; !r > let (-=) r i = r := !r - i; !r > let ( *=) r i = r := !r * i; !r > let (/=) r i = r := !r / i; !r > let (+.=) r d = r := !r +. d; !r > let (-.=) r d = r := !r -. d; !r > let ( *.=) r d = r := !r *. d; !r > let (/.=) r d = r := !r /. d; !r Theses are convenient for C users. Why not, but this is matter of taste, not really a additional functionality > (** eg. homedir // "file". *) > let (//) = Filename.concat > > (** list |> List.iter (fun ... -> ...) *) > let (|>) a f = f a Same for theses > (** The 'lost' conversion function from pervasives. *) > let string_of_char c = > let s = String.create 1 in > s.[0] <- c; > s open ExtString; String.of_char is doing the job. [...] > (** Return true if a string starts with another string. *) > let starts_with str prefix = > let len = String.length prefix in > (String.sub str 0 len) = prefix > > (** Return true if a string ends with another string. *) > let ends_with str suffix = > let len = String.length str in > let sflen = String.length suffix in > (String.sub str (len-sflen) sflen) = suffix ends_with is already in ExtString. I will add starts_with (sounds logical to have both). BTW your implementation of starts_with raise an exception if strlen(prefix) > strlen(str) ! > let readdir_all dirname = > let is_dir path = > let is_dir_lstat path = > let copy_file src dest = > let rec delete_directory path = Theses are looking useful but not complete, I think that we need a module full a functions for file/directory access, creating , copying and moving. If s/one is willing to write it.... > let buffer_of_chan chan = We already have this one : Std.input_all : in_channel -> string Nicolas Cannasse |
From: Michal M. <mal...@pl...> - 2003-09-28 12:03:35
|
On Sun, Sep 28, 2003 at 11:12:34AM +0100, Richard Jones wrote: > Below are the edited highlights from a standard "library.ml" that I > like to use. It may be a good conversation point for some extra > functions in Std, ExtString, etc. > > I've added my own comments. > > ---------------------------------------------------------------------- > (** Generally useful library functions. > * > * $Id: lib.ml,v 1.15 2003/09/15 12:07:12 rich Exp $ > *) > > open Unix > > (** Some useful operators on int and double references. *) > let (+=) r i = r := !r + i; !r > let (-=) r i = r := !r - i; !r > let ( *=) r i = r := !r * i; !r > let (/=) r i = r := !r / i; !r > let (+.=) r d = r := !r +. d; !r > let (-.=) r d = r := !r -. d; !r > let ( *.=) r d = r := !r *. d; !r > let (/.=) r d = r := !r /. d; !r It seems unusual to return value from X= operators. In ocaml assignment is executed purely for side effects (returns unit). > (** list |> List.iter (fun ... -> ...) *) > let (|>) a f = f a Just a remark: this is called ++ in ocaml compiler sources. But ++ would be too common name I suppose. > (** Return true if a string starts with another string. *) > let starts_with str prefix = > let len = String.length prefix in > (String.sub str 0 len) = prefix > > (** Return true if a string ends with another string. *) > let ends_with str suffix = > let len = String.length str in > let sflen = String.length suffix in > (String.sub str (len-sflen) sflen) = suffix Both should be ExtString (or whatever it's called), not in ExtPervesives. -- : Michal Moskal :: http://www.kernel.pl/~malekith : GCS {C,UL}++++$ a? !tv : When in doubt, use brute force. -- Ken Thompson : {E-,w}-- {b++,e}>+++ h |
From: Richard J. <ri...@an...> - 2003-09-28 10:45:04
|
Below are the edited highlights from a standard "library.ml" that I like to use. It may be a good conversation point for some extra functions in Std, ExtString, etc. I've added my own comments. ---------------------------------------------------------------------- (** Generally useful library functions. * * $Id: lib.ml,v 1.15 2003/09/15 12:07:12 rich Exp $ *) open Unix (** Some useful operators on int and double references. *) let (+=) r i = r := !r + i; !r let (-=) r i = r := !r - i; !r let ( *=) r i = r := !r * i; !r let (/=) r i = r := !r / i; !r let (+.=) r d = r := !r +. d; !r let (-.=) r d = r := !r -. d; !r let ( *.=) r d = r := !r *. d; !r let (/.=) r d = r := !r /. d; !r (** eg. homedir // "file". *) let (//) = Filename.concat (** list |> List.iter (fun ... -> ...) *) let (|>) a f = f a (** The 'lost' conversion function from pervasives. *) let string_of_char c = let s = String.create 1 in s.[0] <- c; s (** Clip value within range [lower .. upper]. *) let clip lower upper v = min upper (max lower v) (** Return true if a string starts with another string. *) let starts_with str prefix = let len = String.length prefix in (String.sub str 0 len) = prefix (** Return true if a string ends with another string. *) let ends_with str suffix = let len = String.length str in let sflen = String.length suffix in (String.sub str (len-sflen) sflen) = suffix (** Return a list of files in a directory, excluding "." and "..". Throws the * usual exceptions if the directory cannot be found or opened. Note if you * want the names in alphabetical order, you must sort them yourself. *) let readdir_all dirname = let dir = opendir dirname in let names = ref [] in let rec loop () = let name = readdir dir in if name <> "." && name <> ".." then names := name :: !names; loop () in try loop (); [] with End_of_file -> closedir dir; !names (** Check if path is a directory. *) let is_dir path = (* Hack for Windoze ... *) let path = match Sys.os_type with "Win32" -> if ends_with path "\\" then path ^ "." else path | _ -> path in try (stat path).st_kind = S_DIR with Unix_error _ -> false (** Check if path is a file. *) let is_file path = try (stat path).st_kind = S_REG with Unix_error _ -> false (** Like [is_dir] but uses [lstat] instead. *) let is_dir_lstat path = (* Hack for Windoze ... *) let path = match Sys.os_type with "Win32" -> if ends_with path "\\" then path ^ "." else path | _ -> path in try (lstat path).st_kind = S_DIR with Unix_error _ -> false (** Copy a file. *) let copy_file src dest = let inf = open_in_bin src in let outf = open_out_bin dest in let buffer = String.create 4096 in let rec loop () = let len = input inf buffer 0 4096 in if len > 0 then ( output outf buffer 0 len; loop () ) in loop (); close_in inf; close_out outf (** Recursively delete a directory. *) let rec delete_directory path = let files = List.map ((//) path) (readdir_all path) in List.iter ( fun path -> if is_dir_lstat path then delete_directory path else unlink path ) files; rmdir path (** Read whole input channel into a buffer. *) let buffer_of_chan chan = let buffer = Buffer.create 4096 in let str = String.create 4096 in let rec loop () = let r = input chan str 0 4096 in if r > 0 then ( Buffer.add_substring buffer str 0 r; loop () ) in loop (); buffer ---------------------------------------------------------------------- -- Richard Jones. http://www.annexia.org/ http://freshmeat.net/users/rwmj Merjis Ltd. http://www.merjis.com/ - all your business data are belong to you. MONOLITH is an advanced framework for writing web applications in C, easier than using Perl & Java, much faster and smaller, reusable widget-based arch, database-backed, discussion, chat, calendaring: http://www.annexia.org/freeware/monolith/ |
From: Richard J. <ri...@an...> - 2003-09-28 10:17:15
|
On Sat, Sep 27, 2003 at 11:40:40PM +0200, Nicolas Cannasse wrote: [...] Also I use the following wrapper around Marshal. It introduces a few nice concepts (I think anyway) such as a Buffer-variant which you can use for input. Rich. -- Richard Jones. http://www.annexia.org/ http://freshmeat.net/users/rwmj Merjis Ltd. http://www.merjis.com/ - all your business data are belong to you. "I wish more software used text based configuration files!" -- A Windows NT user, quoted on Slashdot. |
From: Nicolas C. <war...@fr...> - 2003-09-27 21:40:49
|
Dear OCaml users, I'm please to announce the first release of ExtLib : ExtLib is a project aiming at providing a complete - yet small - standard library for the OCaml programming langage. The purpose of this library is to add new functions to OCaml Standard Library modules, to modify some functions in order to get better performances or more safety (tail-recursive) but also to provide new modules which should be useful for the average OCaml developer. The version 1.0b includes : - all tail recursive List functions (keeping high performances) - dynamic auto-resizing array - new functions for String and Hashtable - small unicode support - efficient bitset - enumerations over abstract collection of elements - ... Source downloads and online documentation can be found on the project page : http://ocaml-lib.sourceforge.net Nicolas Cannasse |
From: Nicolas C. <war...@fr...> - 2003-09-23 18:56:39
|
> > Before that, I > > would like to get the maximum number of reviews, installs, and comments > > about it. > > The installation fails if "doc" directory is already present. Add > "-p" option to "mkdir" invocation, or test the presence of "doc" > directory in install.ml (which might be preferable). The second choice is better. I'll update the install script, thanks for the report. Since not so many people had yet time to install and test the ExtLib, I'll wait few more days before releasing (we're not so in hurry after all). Nicolas Cannasse |
From: Yamagata Y. <yor...@mb...> - 2003-09-23 15:16:14
|
From: "Nicolas Cannasse" <war...@fr...> Subject: [Ocaml-lib-devel] ExtLib1.0b Proposal Date: Sat, 20 Sep 2003 12:44:08 +0200 > Before that, I > would like to get the maximum number of reviews, installs, and comments > about it. The installation fails if "doc" directory is already present. Add "-p" option to "mkdir" invocation, or test the presence of "doc" directory in install.ml (which might be preferable). |
From: Brian H. <bh...@sp...> - 2003-09-20 15:29:28
|
On Sat, 20 Sep 2003, Nicolas Cannasse wrote: > > Here's my take on this: the bitset library should be merged with the > > bigint library, and the whole kit and kaboodle should be built on top of > > GMP for performance (especially the bigint stuff). This necessitates > > extending GMP. I have some code written that I need to clean up and > > submit to the GMP group, and then I need to look at hosting GMP from > > Ocaml. > > Uhm, maybe that's a little bit far from ExtLib objectives. > ExtLib should be small, and no contains any C code (because then > installation / dependencies etc... are starting being really a big > problem ). > I you need a very efficient bitset, then of course you can write and provide > a standalone library for this purpose, but ExtLib bitset should be enough > for most of the users. Good point. Another good point just occurred to me. Even assuming I submit the GMP code today (highly unlikely), and it's accepted, it won't show up in GMP until the next major release cycle, which won't show up in distros until their next major release cycle, etc. I.e. it's going to be 12-24 months at least before the GMP support is widely enough available to be able to build the next level on top of. I'd rather not hold up ExtLib that long :-). Objection withdrawn. > Ok, waiting 'till done :) Thanks. Brian |
From: Nicolas C. <war...@fr...> - 2003-09-20 10:56:01
|
Hi people, Yesterday I've made a big update on the CVS, corrected some things here and there, implemented missing module (extHashtbl) completed documentation and added a small install script. Here's a zip of what should be the 1.0b (beta because not so much testing right now) which will be announced on the Ocaml mailling list in the following days (let's say tuesday). Before that, I would like to get the maximum number of reviews, installs, and comments about it. (this is a second email, the first got rejected because too big attached file - 43 Ko ? - please download the file from http://warplayer.free.fr/files/extlib-1.0b.zip ) Thanks, Nicolas Cannasse |
From: Nicolas C. <war...@fr...> - 2003-09-20 10:53:21
|
> Here's my take on this: the bitset library should be merged with the > bigint library, and the whole kit and kaboodle should be built on top of > GMP for performance (especially the bigint stuff). This necessitates > extending GMP. I have some code written that I need to clean up and > submit to the GMP group, and then I need to look at hosting GMP from > Ocaml. Uhm, maybe that's a little bit far from ExtLib objectives. ExtLib should be small, and no contains any C code (because then installation / dependencies etc... are starting being really a big problem ). I you need a very efficient bitset, then of course you can write and provide a standalone library for this purpose, but ExtLib bitset should be enough for most of the users. > - I have a reimplementation of psqueue about 1/3rd the way through debug. > The interface won't change at all. The implementation is changing > radically, in a way that radically improves the maintainability (and > testability I comment) of the code. The goal here is to have the > possibility that some human on the face of this earth other than me could, > if dire need arose, actually understand the code :-). The new code > structure is also signfigantly shorter- the same behavior was implemented > with about 1/3rd less code. Which is made up for by the fact that I've > added new code I've intended to for a while- primarily Enum support. Ok, waiting 'till done :) Nicolas Cannasse |
From: Nicolas C. <war...@fr...> - 2003-09-20 10:43:14
|
Hi people, Yesterday I've made a big update on the CVS, corrected some things here and there, implemented missing module (extHashtbl) completed documentation and added a small install script. Here's a zip of what should be the 1.0b (beta because not so much testing right now) which will be announced on the Ocaml mailling list in the following days (let's say tuesday). Before that, I would like to get the maximum number of reviews, installs, and comments about it. Thanks, Nicolas Cannasse |
From: Brian H. <bh...@sp...> - 2003-09-20 00:28:13
|
Some news on my front. On Fri, 19 Sep 2003, Nicolas Cannasse wrote: > Hi list, > > - remove the ExtArray module (deprecated because DynArray is better) This still existed? :-) > - added BitSet (posted on this list several weeks ago) Here's my take on this: the bitset library should be merged with the bigint library, and the whole kit and kaboodle should be built on top of GMP for performance (especially the bigint stuff). This necessitates extending GMP. I have some code written that I need to clean up and submit to the GMP group, and then I need to look at hosting GMP from Ocaml. - I have a reimplementation of psqueue about 1/3rd the way through debug. The interface won't change at all. The implementation is changing radically, in a way that radically improves the maintainability (and testability I comment) of the code. The goal here is to have the possibility that some human on the face of this earth other than me could, if dire need arose, actually understand the code :-). The new code structure is also signfigantly shorter- the same behavior was implemented with about 1/3rd less code. Which is made up for by the fact that I've added new code I've intended to for a while- primarily Enum support. Brian |
From: Nicolas C. <war...@fr...> - 2003-09-19 20:22:26
|
Hi list, After some weeks of hollidays and busy work, I'm back to work on the ExtLib. The immediate goal is to quickly make a release of the current modules, and add new ones. Some modifications have been done : - Enum.empty renamed to Enum.is_empty - Enum.empty : unit -> 'a t now return an empty enum - remove the ExtArray module (deprecated because DynArray is better) - added BitSet (posted on this list several weeks ago) - wrote a trial for a polymorphic Set ( often requested on both official and beginners ocaml mailing list ) Here's joined PSet, for polymorphic Set. The code is mostly based on the Set module, please have a look and report any request. I'll now check and complete all the modules documentation, make a package, put the ocamldoc on the website... Nicolas Cannasse |
From: Nicolas C. <war...@fr...> - 2003-09-19 19:56:10
|
Of course, forgot to attach the file... > Hi list, > > After some weeks of hollidays and busy work, I'm back to work on the ExtLib. > The immediate goal is to quickly make a release of the current modules, and > add new ones. Some modifications have been done : > - Enum.empty renamed to Enum.is_empty > - Enum.empty : unit -> 'a t now return an empty enum > - remove the ExtArray module (deprecated because DynArray is better) > - added BitSet (posted on this list several weeks ago) > - wrote a trial for a polymorphic Set ( often requested on both official and > beginners ocaml mailing list ) > Here's joined PSet, for polymorphic Set. The code is mostly based on the Set > module, please have a look and report any request. > > I'll now check and complete all the modules documentation, make a package, > put the ocamldoc on the website... > > Nicolas Cannasse > |