Here is the latest Caml Weekly News, for the week of 22 to 29 November, 2005.
Archive: http://thread.gmane.org/gmane.comp.lang.caml.general/31458Jon Harrop announced:
Following Oliver's objections regarding the lack of serious software written in OCaml (e.g. web servers), I have written a very serious Mandelbrot renderer. The program is 35 lines of OCaml and renders using OpenGL. This page breaks it down and describes how it works: http://www.ffconsultancy.com/free/fractal I've written a simple, recursive C++ version as well. It weighs in at 45 lines but only 6% more bytes. If you specialise the complex-number arithmetic in the OCaml: let rec mandelbrot i cx cy zx zy = if i = 63 || zx *. zx +. zy *. zy > 4. then i else let zx = zx *. zx -. zy *. zy and zy = 2. *. zx *. zy in mandelbrot (i+1) cx cy (zx +. cx) (zy +. cy) then, with only -O3, the C++ is actually significantly slower. The performance of the C++ improves considerably with -ffast-math so that it is slightly faster. The performance of the C++ can be further improved by using an imperative style. This is on both AMD64 and x86.
Archive: http://thread.gmane.org/gmane.comp.lang.caml.general/31459Jacques Carette announced:
Inspired by Julien Signoles' code for Omega, (http://www.lri.fr/~signoles/prog/misc/lambda.ml.html) Oleg K explores different ways to create a *fully polymorphic* fixpoint operator in Ocaml. See http://pobox.com/~oleg/ftp/packages/fixpoints.ml for details.
Archive: http://thread.gmane.org/gmane.comp.lang.caml.general/31476Richard Jones announced:
Not likely to be of wide interest, but we have implemented a simple interface to the commercial Boom SMS (text message sending) service. We use this to generate alerts when significant things happen while automatically bidding on Google Adwords. http://merjis.com/developers/boomsms License is LGPL + OCaml linking exception. Interface: http://resources.merjis.com/developers/boomsms/BoomSMS.html Read more about the commercial service here. If you want to test it, they will give you up to 50 free text messages (if you ask them). http://sms.boom-sms.co.uk/
Archive: http://thread.gmane.org/gmane.comp.lang.confluence/405Tom Hawkins announced:
HDCaml is a hardware design and verification language embedded in OCaml. With release 0.2.5, HDCaml now produces cycle and bit accurate C models for simulation. In addition to the logic primitives, the C models also support basic assertions of the form: assertion "label" (always (prop (some_signal))); The C models include a SystemC wrapper for integration into any SystemC environment. The wrapper is currently untested, so feedback from any SystemC user is appreciated. Thanks! http://www.confluent.org/
Archive: http://thread.gmane.org/gmane.comp.lang.caml.general/31485Tom Hawkins asked and Nicolas Cannasse answered:
> Is their a version of "compare" that is based on physical equality? If > not, how can I define one? I tried: > > let compareq a b = if a == b then 0 else if a > b then 1 else (-1) > > But unfortunately, (>) is a structural comparison. > > I need to make a Map where the keys are distinguished by the physical > instance. It's not possible. One of the reason is that the GC might move your memory addresses around and then break your Map constitency. You need to attribute an unique id to each of your items and use it for comparison.Jon Harrop suggested:
Tag every key with a unique integer using something like this: module Tag : sig type 'a t val make : 'a -> 'a t val compare : 'a t -> 'a t -> int end = struct type 'a t = int * 'a let i = ref 0 let make x = incr i; !i, x let compare (a, _) (b, _) = compare a b end;; Then use the Tag.compare function to perform physical comparison with a total ordering.Jean-Christophe Filliatre also suggested:
Others already gave the right answer i.e. that you need to tag your values with unique integers to do that. Just to mention it, I wrote a little hash-consing library that does precisely this, together with specialized versions of Set and Map for these tagged values (based on Patricia trees). There is even a short article describing the technique. All is available on this page: http://www.lri.fr/~filliatr/software.en.html
Archive: http://thread.gmane.org/gmane.comp.lang.caml.general/31509Richard Jones announced:
Version 1.1.0 has been released. Download: http://merjis.com/developers/csv Documentation: http://resources.merjis.com/developers/csv/Csv.html
Archive: http://thread.gmane.org/gmane.comp.lang.caml.general/31531Gerd Stolpmann announced:
there is a new version of findlib (1.1.1) with two minor bug fixes, especially for O'Caml 3.09. See http://www.ocaml-programming.de/packages/documentation/findlib/ for documentation and links. See http://www.ocaml-programming.de/packages/ for downloads.
Archive: http://thread.gmane.org/gmane.comp.lang.caml.general/31535Christopher Alexander Stein asked:
J'avais l'habitude d'avoir une utilité très commode pour Caml; la ligne éditant "ile" qui envelopperait l'interprèteur. Je puis plus ne le trouver sur le web. N'importe qui savent où il est ou suggèrent un remplacement? (Editor's translation: the poster is looking for the line editor "ile" or a remplacement that would allow him, when using it with the toplevel, to have a better line editing experience.)Eric Cooper suggested:
Try ledit, available as a Debian package or from ftp://ftp.inria.fr/INRIA/cristal/Daniel.de_Rauglaudre/Tools/Michael Wohlwend suggested:
there is also rlwrap which is easier to use. (readline wrap)Martin Jambon suggested:
There is some useful information there, and you are welcome to contribute too: http://wiki.cocan.org/tips_for_using_the_ocaml_toplevelAlain Frisch said:
Google donne ce lien: http://ocaml.info/ocaml_sources/ile-2.7/
Here is a quick trick to help you read this CWN if you are viewing it using vim (version 6 or greater).
If you know of a better way, please let me know.
If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a look at the archive or the RSS feed of the archives.
If you also wish to receive it every week by mail, you may subscribe online.