Hello
Here is the latest Caml Weekly News, for the week of 21 to 28 October, 2003.
> I'm new to OCAML. I have written C++ code which needs to call a > OCAML subroutine (written by somebody else). I'm using a Windows > XP/Pentium 4 system and have the Microsoft Visual C++ compiler. I > was wondering if anybody has experience doing this and could kindly > give me some instructions on how to accomplish this. You may use the ODLL tool from the http://tech.motion-twin.com/ ``ODLL is creating a Win32 DLL from an OCaml library, and automatically generating the C stubs needed to interface the OCaml code and the C code and the .H interface. Simply run ODLL with you CMA/CMXA and one or several CMI interfaces and ODLL will do the job for you.'' I hope it helps you.
This is to announce the release of ocamlgsl version 0.3.0 . ocamlgsl is a set of bindings for GSL, the GNU Scientific Library http://sources.redhat.com/gsl/ . GSL is "a collection of routines for numerical computing" : this includes RNGs, special functions, FFT, linear algebra, numerical integration, etc. What's new: - support for the latest GSL (version 1.4) - bugfixes - compiles with MSVC (contributed by Lexifi) available here : http://oandrieu.nerim.net/ocaml/gsl/
I would like to announce the The Enhanced Ocaml Documentation Version 3.07 available via http://wwwtcs.inf.tu-dresden.de/~tews/htmlman-3.07 The enhanced documentation contains the original html version of the ocaml reference manual with the following changes: - Changes (wrt version 3.06) are tagged with icons and color - meta symbols of the grammar are "hot" and refer to their definition. - additional appendix containing just the grammar rules Browsing through the Enhanced Ocaml Documentation you will discover the following changes that have not been announced in http://caml.inria.fr/archives/200309/msg00313.html : - character literals can be given hexadecimal line '\x40' - matching or-patterns is now guaranteed left-to-right - OCAMLRUNPARAM can be given in hexadicimal - new ocamllex argument -ml (use an ocaml engine) and -o (output file) - parametrized ocamllex lexers - in ocamllex one can choose between "shortest match" and "longest match" rule - 4 new options for ocamldoc/texinfo: -info-entry, -info-section, -noheader, and -notrailer - new function Buffer.add_substitute - new printf conversion %! (flush)
Anyone want to do something with OCaml on Eclipse? IBM has a million dollars in grants for teaching and research efforts done with their extensible open source IDE. (I currently use it for Java work - its very good, reminds me of Smalltalk dev environments.) It's designed to be extensible to support other languages (currently has a strong working C++ extension, and many other languages coming along). Any OCaml proposals should probably include some work to allow Java and OCaml runtimes to inter-operate. Proposals are due by November 7th. http://www-3.ibm.com/software/info/university/products/eclipse/eig.html
I'm pleased to announce two new free software products from Merjis Ltd.: * perl4caml 0.3.6 - use Perl code and libraries within Objective CAML * mod_caml 1.0.0 - OCaml bindings for the Apache API (and much more!) (I'm combining these two announcements into one to reduce list bandwidth) More information about perl4caml here: http://www.merjis.com/developers/perl4caml/ More information about mod_caml is available here: http://savannah.nongnu.org/files/?group=modcaml http://www.merjis.com/developers/mod_caml/ In addition, if you install both perl4caml and mod_caml at the same time, then you can use any Perl DBD (database driver) with the mod_caml DBI database layer. Perl DBDs are available for a wide variety of databases.
> Say I have a function such as pow defined as > > let pow n x = > let rec pow_iter (n1, x1, p1) = > if (n1 = 0) then p1 > else if (n1 mod 2 = 0) > then pow_iter(n1/2, x1*x1, p1) > else pow_iter(n1-1, x1, p1*x1) > in pow_iter(n, x, 1);; > > and I say > > let pow2 = pow 2 > > Are there any ML implementations that would automatically perform > partial evaluation to create pow2 instead of using closures, possibly > unfolding the pow_iter call? Would Caml ever have this capability? Multi-Stage Programming is your friend... http://www.cs.rice.edu/~taha/MSP/ There are two ML implementations : Ocaml : MetaOCaml http://www.cs.rice.edu/~taha/MetaOCaml/ SML : MetaML http://www.cse.ogi.edu/PacSoft/projects/metaml/ let rec pow n = .< .~(match n with | 1 -> .< fun x -> x >. | n -> .< fun x -> x * .~(pow (n-1)) x>. ) >. (pow 3) get reduced into .<fun x -> x*x*x>.Dmitry Lomov added:
May I also humbly draw your attention to Dynamic Caml: http://oops.tercom.ru/dml :)
> I'm working on interfacing a piece of Ocaml code with an Oracle > dbms. I noticed that Ocamlodbc does support Oracle, and I've been able > to build both the unixodbc and the ocamlodbc/oraclecfo libraries. I'd > like to know what C client libraries/ODBC drivers i need for Oracle to > work with ocamlodbc. You will need the Oracle client installation and an ODBC driver. As far as I know there are no stable freely-available Oracle ODBC drivers for UnixODBC, but there are a few commercial drivers that look pretty nice. > Also, does anyone know if there is a "native" client library for > Oracle à la libpq de PostgreSQL? Search the Caml Humps for the OCaml OCI library. There is one out there. I have used it with success. Here's the URL: http://oci8ml.sourceforge.net/ Good luck!Sebastien Ferre added:
I recently implemented an access to Oracle for OCaml. I just use the free C library libsqlora8, which provides an easy interface to Oracle, and wrap it in a OCaml module. The interface is simple, and probably limited, but I think it is suitable to most uses. The C library is available at http://www.poitschke.de/libsqlora8/ . I can give you the wrapping code (a C file + a ML file), if you wish.
Here is a quick trick to help you read this CWN if you are viewing it using vim (version 6 or greater).
:set foldmethod=expr
:set foldexpr=getline(v:lnum)=~'^=\\{78}$'?'<1':1
zM
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.