Previous week Up Next week

Hello

Here is the latest Caml Weekly News, for the week of December 28, 2010 to January 04, 2011.

  1. Manifest types in module type inclusions
  2. yypkg: cross-platform package manager, and build scripts for windows
  3. Come work at Jane Street!
  4. OCaml Forge has been upgraded
  5. Argot: 1.0-alpha release
  6. Mascot: 1.0-alpha release
  7. Other Caml News

Manifest types in module type inclusions

Archive: https://sympa-roc.inria.fr/wws/arc/caml-list/2010-12/msg00267.html

Markus Mottl asked and Jacques Garrigue replied:
> please consider the following code:
> 
> -------------------
> module M = struct type t = A | B end
> 
> module X : sig
> (*  type t = M.t = A | B *)
>  include module type of M
> (*  include module type of M with type t = M.t = A | B *)
> end = struct include M end
> 
> let () = assert (M.A = X.A)
> -------------------
> 
> This will fail, because M.A is not of the same type as X.A.  But I
> would really like to make the types equivalent.
> 
> Using the first commented out line instead of the module type
> inclusion will succeed, but then I would not be able to automatically
> include any functions potentially contained in module M.  The last
> commented out line won't work, because one cannot establish a type
> equivalence via a manifest type definition after "with type".  Even
> if, I don't think one could override anything else but an abstract
> type that way, and we are including a sum type here already.
> 
> Does anybody have any suggestions for a workaround?  I suspect this
> may be a missing feature.

Unfortunately there is no easy workaround using 3.12.0.
Intuitively at least the 3rd line should work, but a bug prevents this.

In 3.12.1, you should be able to write either the 3rd, or the
simpler following version:

  include module type of M with type t = M.t

This should solve your problem.

Side note: the choice to make "include M" define "type t = A | B"
rather than "type t = M.t = A | B" was done to allow more implementations
(any module defining the same operations as M is allowed, rather
than modules sharing the same representation for types.)
But it resulted in not allowing the code you write here, which was
not intentional.
      

yypkg: cross-platform package manager, and build scripts for windows

Archive: https://sympa-roc.inria.fr/wws/arc/caml-list/2010-12/msg00298.html

Adrien Nader announced:
I am pleased to announce the first public release of yypkg (Yellow
Yeti Pkg), a fast, cross-platform package manager (yes, this includes
windows).

I am also pleased to announce the "mingw-builds" project, a port of
the Slackware Linux build scripts (shell scripts) to allow
cross-compilation to mingw(-w64) (gcc on windows).

The most notable features of yypkg are portability, the ability to
install anywhere in the filesystem hierarchy and the edition of
libtool (.la) and pkg-config (.pc) files to make packages relocatable.

Currently, all the packages are made with the mingw-builds. The list
currently is: atk, cairo, expat, gdk-pixbuf, gettext, glib2, gtk+2,
iconv, libjpeg, libpng, libtiff, pango, pcre, pixman, wget and zlib.
All are 32bit libraries.
There are no ocaml packages currently unfortunately.

The corresponding triplet for these libraries is i686-w64-mingw32 and
probably requires some explanations: "mingw32" doesn't imply 32bit and
"w64" doesn't imply 64bit.
The "32" from "mingw32" doesn't matter and "w64" means the toolchain
has some features that have been brought by the mingw-w64 project as
opposed to the mingw.org project.
Only the first component matters for the bitness but do it's better
not to mix packages with different triplets.


And one warning: the packages aren't currently perfect. There are
known issues and one in libgthread in particular.
They're in beta but you can definitely try yypkg, help test, and
complain about all the missing and broken features. ;-)


You can get in touch through IRC:
  * on irc.freenode.net: #yypkg, #ocaml, #ocaml-fr
  * on irc.oftc.net: #mingw-w64


Homepage: http://yypkg.forge.ocamlcore.org/
Introduction tutorial: http://yypkg.forge.ocamlcore.org/tutorial/tutorial.html
Screenshots: http://yypkg.forge.ocamlcore.org/screenshots/index.html
Downloads: http://forge.ocamlcore.org/project/showfiles.php?group_id=145

mingw-builds' gitweb: http://gitweb.notk.org/
example build script:
http://gitweb.notk.org/?p=slackware64-current.git;a=blob;f=slackware64-current/source/l/atk/atk.SlackBuild;hb=HEAD

PS: Dependencies are: sexplib, fileutils, bsdtar with xz-support,
wget, and lablgtk2 for the gui.

PS: If you're wondering why not port apt/dpkg or rpm, compare writing
ocaml to porting decade-old C (perl, sh, ...) code to a completely
different platform.
And the packages wouldn't magically become available.

PS: But you can find good packages for cross-compilation to windows in
fedora and opensuse, I think debian is a bit lagging but there is an
effort.
That doesn't really help other distributions and windows itself however.
      

Come work at Jane Street!

Archive: https://sympa-roc.inria.fr/wws/arc/caml-list/2010-12/msg00299.html

Yaron Minsky announced:
Jane Street is looking to hire functional programmers for our offices in
New York, London and Hong Kong.  We're looking for both interns for this
upcoming summer as well as full-time hires.

Jane Street has the largest team of OCaml developers in any industrial
setting, and probably the world's largest OCaml codebase. We use OCaml
for running our entire business, supporting everything from research to
systems administration to automated trading systems.  If you're
interested in using OCaml to solve real-world problems, there's no
better place.

Compensation is more than competitive, and no prior experience with
finance is required.

Follow this link to apply:

   http://janestreet.com/apply

And here are some resources you can use to learn more about Jane Street
and what we do.

- A talk I gave at CMU about how and why we use OCaml
    http://ocaml.janestreet.com/?q=node/61
- Our technical blog
    http://ocaml.janestreet.com
- Our website
    http://janestreet.com
      

OCaml Forge has been upgraded

Archive: https://sympa-roc.inria.fr/wws/arc/caml-list/2010-12/msg00306.html

Sylvain Le Gall announced:
Just a short message to inform you that the OCaml Forge is now using a
brand new FusionForge version (5.1, not yet stable). There is a bunch of
changes, described here:
http://www.ocamlcore.com/wp/2010/12/ocaml-forge-has-been-upgraded/

Another big change, that I just have published, is an unified theme for:
http://forge.ocamlcore.org
http://planet.ocamlcore.org
http://www.ocamlcore.org

Feel free to report bugs and comments!
      

Argot: 1.0-alpha release

Archive: https://sympa-roc.inria.fr/wws/arc/caml-list/2010-12/msg00314.html

Xavier Clerc announced:
This post announces the 1.0-alpha release of the Argot project.
Argot is an enhanced HTML generator for ocamldoc, released under the GPL v3.

Features:
- stroked, underlined, and highlighted styles
- image data inclusion
- full table support (caption, headers, rows, and data)
- token substitution
- @typevar tag to document type variable
- @unimplemented, @todo, @todoc, @docme, @fixme, @tofix tags for remaining 
work
- @threadsafe, @threadunsafe tags for thread compatibility
- @stateful tag for state-based functions
- @attention, @bug, @error, @info, @new, @note, @remark, @warning tags


Home page: http://argot.x9c.fr
      

Mascot: 1.0-alpha release

Archive: https://sympa-roc.inria.fr/wws/arc/caml-list/2010-12/msg00315.html

Xavier Clerc announced:
This post announces the 1.0-alpha release of the Mascot project.
Mascot is a style-checker for Objective Caml sources, released under the GPL 
v3.

Features:
- customization of activated checks (and exceptions) by configuration files
- code checks: overloading of builtin elements, useless constructs, deeply
  nested constructs, 'open' statements, magic numbers, complex conditions
- documentation checks: presence of comments, and spellcheck
- interface checks: empty interface, and number of exported elements
- metrics checks: coupling, Halstead, and McCabe
- miscellaneous checks: matching of regular expressions
- typographic checks: spaces, tabulations, headers, and file/line lengths
- support for CheckStyle, CSV, HTML, JDepend, bare text, and XML outputs
- support for plugins (custom checks and outputs)


Home page: http://mascot.x9c.fr
      

Other Caml News

From the ocamlcore planet blog:
Thanks to Alp Mestan, we now include in the Caml Weekly News the links to the
recent posts from the ocamlcore planet blog at http://planet.ocamlcore.org/.

The Dialectica interpertation in Coq:
  http://math.andrej.com/2011/01/03/the-dialectica-interpertation-in-coq/

ocaml-http-0.1.5 released:
  https://forge.ocamlcore.org/forum/forum.php?forum_id=762

filib:
  https://forge.ocamlcore.org/projects/filib/

okahep:
  https://forge.ocamlcore.org/projects/okahep/

yypkg 1.0.0-beta1 released:
  https://forge.ocamlcore.org/forum/forum.php?forum_id=761

Packrat parser with left recursion:
  http://rwmj.wordpress.com/2010/12/29/packrat-parser-with-left-recursion/

OCaml Forge has been upgraded:
  http://www.ocamlcore.com/wp/2010/12/ocaml-forge-has-been-upgraded/
      

Old cwn

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.


Alan Schmitt