We're happy to inform you that the first alpha version of OCaml Batteries Included has just been released. You may find the source on the Forge [1], as well as the release notes [2], and you can browse the documentation online, including a detailed presentation of what OCaml Batteries Included is all about [3]. A GODI package has also been uploaded for OCaml 3.10 .
The list of features is a tad too long for detailing it here. Let's just say that there are new or improved data structures, i/o, unicode ropes, syntax extensions, primitives for invoking some of the tools of the toolchain, etc.
It's alpha-level code, so use with caution, and not all the features we have in mind have been implemented yet. On the other hand, any form of feedback is greatly appreciated.
Very good work! I have a small suggestion: in the instructions on how to start using the batteries, include a small complete example of a HelloWorld project which uses batteries (and package it up in a .zip). This will help people get started. The current instructions presuppose that the user already has some source code, which is not necessarily the case.
Thanks for the feedback. In the .tgz, there's actually a directory called examples, which is supposed to serve that purpose. We should make it clearer, though.
On Sat, 2008-10-11 at 23:27 +0200, Andrej Bauer wrote: > Very good work! I have a small suggestion: in the instructions on how to > start using the batteries, include a small complete example of a > HelloWorld project which uses batteries (and package it up in a .zip). > This will help people get started. The current instructions presuppose > that the user already has some source code, which is not necessarily the > case.
I think Batteries Included is a great idea and have been looking forward to seeing how it turns out. I've just installed it and have been playing around with it. A quick question, how do you get batteries to work in the toplevel? I tried the usual:
# #use "topfind";; # #require "batteries";; No such package: bin_prot.syntax - Required by `batteries.bin_prot.syntax'
But I get an error. Attempts to "#require" batteries.bin_prot.syntax yield similar errors.
This is quite important to me. I don't know what the general sentiment of the community is, but the toplevel is one of the major reasons I use OCaml. In fact, for every Makefile I write, I write an equivalent toplevel init file. This ensures that any code I write in the toplevel, will compile with no changes and vice versa. Even when making simple edits to compiled code, I will open up a toplevel, load the library/file and open the correct name space of where the edit will take place (automated with some elisp of course). This allows me to test, in the toplevel, each little change I make.
Thanks in advance,
Peng
On Saturday 11 October 2008 09:48:34 am David Teller wrote:
> We're happy to inform you that the first alpha version of OCaml > Batteries Included has just been released. You may find the source on > the Forge [1], as well as the release notes [2], and you can browse the > documentation online, including a detailed presentation of what OCaml > Batteries Included is all about [3]. A GODI package has also been > uploaded for OCaml 3.10 .
> The list of features is a tad too long for detailing it here. Let's just > say that there are new or improved data structures, i/o, unicode ropes, > syntax extensions, primitives for invoking some of the tools of the > toolchain, etc.
> It's alpha-level code, so use with caution, and not all the features we > have in mind have been implemented yet. On the other hand, any form of > feedback is greatly appreciated.
> This is quite important to me. I don't know what the general sentiment of the > community is, but the toplevel is one of the major reasons I use OCaml. In > fact, for every Makefile I write, I write an equivalent toplevel init file.
Hello. On the subject of using toplevel: I would love to use toplevel to test my code but I need a lot of compiled libraries (written in C) - such as FFTW, Lacaml, etc. - and as far as I know, it is not possible to use compiled code from toplevel. Or am I wrong? Also, some of my code is quite computationally intensive, so in byte-code it runs too slowly.
Ideally, I would like to have only the module I am working on in byte-code, playing with it interactively. All the other (stable) modules and all the libaries would be a compiled code and the byte-code and compiled code would seemlessly call each other. Is that feasible?
> Hello. On the subject of using toplevel: I would love to use toplevel > to test my code but I need a lot of compiled libraries (written in C) > - such as FFTW, Lacaml, etc. - and as far as I know, it is not > possible to use compiled code from toplevel. Or am I wrong?
Yes. There's no problem using bindings to C from the toplevel.
> Ideally, I would like to have only the module I am working on in > byte-code, playing with it interactively. All the other (stable) > modules and all the libaries would be a compiled code and the > byte-code and compiled code would seemlessly call each other. Is that > feasible?
AFAIK this is not possible. You will have to use byte code for everything except your C code of course.
It seems we forgot one dependency in the README: you need Bin-prot to get Batteries to work. I must confess that we could have removed that dependency for Alpha 1, as we don't use any feature of Bin-prot yet.
On Sun, 2008-10-12 at 01:42 -0400, Peng Zang wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1
> Hi,
> I think Batteries Included is a great idea and have been looking forward to > seeing how it turns out. I've just installed it and have been playing around > with it. A quick question, how do you get batteries to work in the toplevel? > I tried the usual:
> # #use "topfind";; > # #require "batteries";; > No such package: bin_prot.syntax - Required by `batteries.bin_prot.syntax'
> But I get an error. Attempts to "#require" batteries.bin_prot.syntax yield > similar errors.
> This is quite important to me. I don't know what the general sentiment of the > community is, but the toplevel is one of the major reasons I use OCaml. In > fact, for every Makefile I write, I write an equivalent toplevel init file. > This ensures that any code I write in the toplevel, will compile with no > changes and vice versa. Even when making simple edits to compiled code, I > will open up a toplevel, load the library/file and open the correct name > space of where the edit will take place (automated with some elisp of > course). This allows me to test, in the toplevel, each little change I make.
> Thanks in advance,
> Peng
> On Saturday 11 October 2008 09:48:34 am David Teller wrote: > > Dear list,
> > We're happy to inform you that the first alpha version of OCaml > > Batteries Included has just been released. You may find the source on > > the Forge [1], as well as the release notes [2], and you can browse the > > documentation online, including a detailed presentation of what OCaml > > Batteries Included is all about [3]. A GODI package has also been > > uploaded for OCaml 3.10 .
> > The list of features is a tad too long for detailing it here. Let's just > > say that there are new or improved data structures, i/o, unicode ropes, > > syntax extensions, primitives for invoking some of the tools of the > > toolchain, etc.
> > It's alpha-level code, so use with caution, and not all the features we > > have in mind have been implemented yet. On the other hand, any form of > > feedback is greatly appreciated.
On Sun, Oct 12, 2008 at 5:20 AM, Jan Kybic <ky...@fel.cvut.cz> wrote: > Hello. On the subject of using toplevel: I would love to use toplevel > to test my code but I need a lot of compiled libraries (written in C) > - such as FFTW, Lacaml, etc. - and as far as I know, it is not > possible to use compiled code from toplevel. Or am I wrong? Also, some > of my code is quite computationally intensive, so in byte-code it runs > too slowly.
It is certainly possible to use Lacaml (and presumably also FFTW) in toplevels. There shouldn't be any noticable performance penalty, since almost all of the computation time is spent in external libraries written in Fortran or C.
On Sunday 12 October 2008 05:20:23 am Jan Kybic wrote:
> Also, some > of my code is quite computationally intensive, so in byte-code it runs > too slowly.
I run into this problem occasionally as well. My solution has always been to make the test problem smaller. Eg. I was writing a driving directions generator (like Mapquest). Testing on the US road network was too slow so I used the state of New Hampshire. The toplevel helps my development and testing. Once things look good, then I run on the real stuff with compiled code.
On Sunday 12 October 2008 09:59:13 am David Teller wrote:
> Hi,
> It seems we forgot one dependency in the README: you need Bin-prot to > get Batteries to work. I must confess that we could have removed that > dependency for Alpha 1, as we don't use any feature of Bin-prot yet.
> Cheers, > David
Thanks for your help. Installing Bin-prot has seemed to fix that error. Unfortunately, now I get a different one. To give some context, I am trying to create an equivalent toplevel init.ml file that corresponds to the ocamlbuild _tags file.
To build a project with Batteries all you need is "<*>: use_batteries" in the _tags file. I don't really use ocamlbuild so I am assuming the _tags file plays a similar role to your normal Makefile.
My equivalent init.ml file which aims to start an ocamltoplevel in an environment where any code that compiles will run in the toplevel consists, so far of:
#use "topfind" #require "batteries"
The new error is: Reference to undefined global `Ref'
I am not familiar with Ref. It looks like it's a module in Batteries, so I'm not sure why it's throwing this error. I tried to open Data.Mutable to see if perhaps things worked despite the warning, but it does not appear to be so.
Any ideas? I've attached the complete output below for reference.
Thanks in advance,
Peng
Objective Caml version 3.10.2
# #use "topfind";; - - : unit = () [.] [/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/findlib] [/home/peng/app-data/godi-latest/lib/ocaml/std-lib] [/home/peng/app-data/godi-latest/lib/ocaml/std-lib/camlp4] Findlib has been successfully loaded. Additional directives: #require "package";; to load a package #list;; to list the available packages #camlp4o;; to load camlp4 (standard syntax) #camlp4r;; to load camlp4 (revised syntax) #predicates "p,q,...";; to set these predicates Topfind.reset();; to force that packages will be reloaded #thread;; to enable threads
> It seems we forgot one dependency in the README: you need Bin-prot to > get Batteries to work. I must confess that we could have removed that > dependency for Alpha 1, as we don't use any feature of Bin-prot yet.
> Cheers, > David
> On Sun, 2008-10-12 at 01:42 -0400, Peng Zang wrote: > > -----BEGIN PGP SIGNED MESSAGE----- > > Hash: SHA1
> > Hi,
> > I think Batteries Included is a great idea and have been looking forward > > to seeing how it turns out. I've just installed it and have been playing > > around with it. A quick question, how do you get batteries to work in > > the toplevel? I tried the usual:
> > # #use "topfind";; > > # #require "batteries";; > > No such package: bin_prot.syntax - Required by > > `batteries.bin_prot.syntax'
> > But I get an error. Attempts to "#require" batteries.bin_prot.syntax > > yield similar errors.
> > This is quite important to me. I don't know what the general sentiment > > of the community is, but the toplevel is one of the major reasons I use > > OCaml. In fact, for every Makefile I write, I write an equivalent > > toplevel init file. This ensures that any code I write in the toplevel, > > will compile with no changes and vice versa. Even when making simple > > edits to compiled code, I will open up a toplevel, load the library/file > > and open the correct name space of where the edit will take place > > (automated with some elisp of course). This allows me to test, in the > > toplevel, each little change I make.
> > Thanks in advance,
> > Peng
> > On Saturday 11 October 2008 09:48:34 am David Teller wrote: > > > Dear list,
> > > We're happy to inform you that the first alpha version of OCaml > > > Batteries Included has just been released. You may find the source on > > > the Forge [1], as well as the release notes [2], and you can browse > > > the documentation online, including a detailed presentation of what > > > OCaml Batteries Included is all about [3]. A GODI package has also > > > been uploaded for OCaml 3.10 .
> > > The list of features is a tad too long for detailing it here. Let's > > > just say that there are new or improved data structures, i/o, unicode > > > ropes, syntax extensions, primitives for invoking some of the tools of > > > the toolchain, etc.
> > > It's alpha-level code, so use with caution, and not all the features we > > > have in mind have been implemented yet. On the other hand, any form of > > > feedback is greatly appreciated.
On Sun, 2008-10-12 at 13:00 -0400, Peng Zang wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1
> On Sunday 12 October 2008 09:59:13 am David Teller wrote: > > Hi,
> > It seems we forgot one dependency in the README: you need Bin-prot to > > get Batteries to work. I must confess that we could have removed that > > dependency for Alpha 1, as we don't use any feature of Bin-prot yet.
> > Cheers, > > David
> Thanks for your help. Installing Bin-prot has seemed to fix that error. > Unfortunately, now I get a different one. To give some context, I am trying > to create an equivalent toplevel init.ml file that corresponds to the > ocamlbuild _tags file.
> To build a project with Batteries all you need is "<*>: use_batteries" in the > _tags file. I don't really use ocamlbuild so I am assuming the _tags file > plays a similar role to your normal Makefile.
> My equivalent init.ml file which aims to start an ocamltoplevel in an > environment where any code that compiles will run in the toplevel consists, > so far of:
> #use "topfind" > #require "batteries"
> The new error is: Reference to undefined global `Ref'
> I am not familiar with Ref. It looks like it's a module in Batteries, so I'm > not sure why it's throwing this error. I tried to open Data.Mutable to see > if perhaps things worked despite the warning, but it does not appear to be > so.
> Any ideas? I've attached the complete output below for reference.
On Sat, Oct 11, 2008 at 03:48:34PM +0200, David Teller wrote: > We're happy to inform you that the first alpha version of OCaml > Batteries Included has just been released.
-- Stefano Zacchiroli -*- PhD in Computer Science \ PostDoc @ Univ. Paris 7 zack@{upsilon.cc,pps.jussieu.fr,debian.org} -<>- http://upsilon.cc/zack/ I'm still an SGML person,this newfangled /\ All one has to do is hit the XML stuff is so ... simplistic -- Manoj \/ right keys at the right time