[cwn] Attn: Development Editor, Latest Caml Weekly News

Alan Schmitt alan.schmitt at polytechnique.org
Tue Jun 2 01:20:30 PDT 2009


Hello,

Here is the latest Caml Weekly News, for the week of May 26 to June  
02, 2009.

1) ocaml-ancient 0.9.0 - adds 'ancient' heap to OCaml
2) OCaml version 3.11.1+rc0
3) Bisect / Bolt / Kaputt: 1.0-beta releases
4) Probabilistic programming in OCaml
5) Other Caml News

========================================================================
1) ocaml-ancient 0.9.0 - adds 'ancient' heap to OCaml
Archive: <http://caml.inria.fr/pub/ml-archives/caml-list/2009/05/f3b3b8dfd837f6b039a44258ab59c99a.en.html 
 >
------------------------------------------------------------------------
** Richard Jones announced:

There hasn't been a release of OCaml Ancient for two and a half years,
and it stopped working with OCaml 3.11 because of a change in the way
the heap was managed.  So I'm pleased to announce a new release which
fixes that and some other things:

   Home page:            <http://merjis.com/developers/ancient>
   Download:             <http://merjis.com/_file/ancient-0.9.0.tar.gz>
   (New) Git repository: <http://git.et.redhat.com/?p=ocaml-ancient.git>
			
========================================================================
2) OCaml version 3.11.1+rc0
Archive: <http://groups.google.com/group/fa.caml/browse_thread/thread/57738498a2510adc# 
 >
------------------------------------------------------------------------
** Continuing the thread from last week, Richard Jones said and  
Stéphane Glondu announced:

We finished upgrading the library packages in Fedora 12, and the only
remaining problem is with ocamlduce which hasn't been ported yet.

I've merged changes from 3.11.1+rc0, and tagged it 3.11.1.0rc0 on  
ocamlcore:

<http://git.ocamlcore.org/cgi-bin/gitweb.cgi?p=ocamlduce/ocamlduce.git>

I won't make a release (with tarball) before the final 3.11.1, but you
can still try it if you want (have a look at README.ocamlduce first to
know how to deal with git checkouts).
			
========================================================================
3) Bisect / Bolt / Kaputt: 1.0-beta releases
Archive: <http://groups.google.com/group/fa.caml/browse_thread/thread/f8eb4c1d6648a1eb# 
 >
------------------------------------------------------------------------
** Xavier Clerc announced:

This post announces the 1.0-beta release of the following projects:
  - Bisect: coverage tool
  - Bolt: logging tool
  - Kaputt: testing tool


=== Bisect ===
Home page: <http://bisect.x9c.fr>
Main changes since 1.0-alpha:
  - switch to OCaml 3.11.0
  - bug #30: incorrect detection of ocamljava
  - bug #31: default make target
  - bug #32: incorrect source rendering under Firefox
  - bug #33: information about global coverage missing
  - bug #34: bare text mode added
  - bug #35: introduction of navigation bar and code folding
  - bug #36: instrumentation with -unsafe switch
  - bug #37: incorrect handling of array literals
  - unreported bug regarding the handling of if/then construct with no  
else
  - introduction of CSV, XML modes
  - major code refactoring and improvement


=== Bolt ===
Home page: <http://bolt.x9c.fr>
First public release, main features:
  - inspired by and modeled after the Apache log4j framework
  - camlp4 syntax extension to remove logging statements at
    compile time
  - configuration of logging at runtime through property file
  - predefined output formats: text, CSV, HTML, XML
  - fully customizable


=== Kaputt ===
Home page: <http://kaputt.x9c.fr>
Main changes since 1.0-alpha:
  - 'Assert.assert_xyz' functions renamed to 'Assert.xyz'
    (old functions are temporary kept as 'deprecated')
  - support for Big_int, Num, Map, Set, Hashtbl, Queue, Stack,
    Weak, and Bigarray
  - support for shell-based tests
  - new output modes (HTML, XML, and CSV)
			
========================================================================
4) Probabilistic programming in OCaml
Archive: <http://groups.google.com/group/fa.caml/browse_thread/thread/09b5dea11fd1ceb9# 
 >
------------------------------------------------------------------------
** Oleg announced:

Chung-chieh Shan and I would like to announce the OCaml library
HANSEI, to express probabilistic models and perform probabilistic
inference. OCaml thus becomes a probabilistic programming
language.

The canonical example of Bayesian net, the grass model, looks as
follows

open ProbM;;
let grass_model () =   (* unit -> bool *)
  let rain = flip 0.3 and sprinkler = flip 0.5 in
  let grass_is_wet =
       (flip 0.9 && rain) || (flip 0.8 && sprinkler) || flip 0.1 in
  if not grass_is_wet then fail ();
  rain;;

The model first defines the prior distributions of two events: of
raining and of the sprinkler being on. We then specify the Bayesian:
grass may be wet because it rained or because the sprinkler was on, or
-- with the probability 10% -- for some other reason. We also consider
that there is 10% chance rain did not wet the grass. We observe that
the grass is wet. What are the chances it rained? To find out, we
execute
	exact_reify grass_model;;
	- : bool pV = [(0.322, V false); (0.2838, V true)]
which after normalization tells the posterior probability of raining,
about 7/15.

The probabilistic model is the regular OCaml function; the independent
random variables rain and sprinkler and the dependent random variable
grass_is_wet are regular OCaml boolean variables. We can pass the
values of these random variables (which are just booleans) to regular
OCaml functions such as 'not' and use the result in the regular if
statement.

HANSEI can handle models that are far more complex than the grass
model, supporting variable (or bucket) elimination, on-demand
evaluation of probabilistic expressions, memoization of stochastic
functions, and importance sampling.

Here is an example of on-demand evaluation:
      let lazy_pair () =
	let x = letlazy (fun () -> flip 0.5) in
	(x (), x ());;
      exact_reify lazy_pair;;
      - : (bool * bool) pV =
        [(0.5, V (true, true)); (0.5, V (false, false))]

We do not observe the pair (true, false).  Evaluating the expression
x () several times gives the same result -- in the same possible
world. That result may be different in another possible world. For
that reason, we cannot use OCaml's own 'lazy' evaluation: OCaml's lazy
is not thread-safe.

A particular feature of HANSEI is that it permits calls to inference
procedures (e.g., exact_reify) appear in models.  After all, both are
OCaml expressions. Distributions thus can be parameterized over
distributions and inference procedures can reason about their own
accuracy.

	The HANSEI code is available at
	<http://okmij.org/ftp/kakuritu/>
The web page also presents HANSEI code for sample probabilistic models
and standard benchmarks (HMM, noisy-or, population estimation, belief
networks).

The current documentation includes two complementary papers
	<http://okmij.org/ftp/kakuritu/dsl-paper.pdf>
to be presented at the IFIP working conference on domain-specific
languages and
	<http://okmij.org/ftp/kakuritu/embedpp.pdf>
to be presented at `Uncertainty in AI'. The papers are written for
different audiences. The first paper explains the implementation of
probabilistic primitives whereas the second describes
the applications of the library.
			
========================================================================
5) 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/ 
 >.

OCaml Metrics beta (0.51) released:
   <http://forge.ocamlcore.org/forum/forum.php?forum_id=370>

Making mutable state faster: optimizing the caml_modify write barrier:
   <http://eigenclass.org/R2/writings/optimizing-caml_modify>

simple expat based xml parser:
   <https://mancoosi.org/~abate/simple-expat-based-xml-parser>

Mathematically Structured but not Necessarily Functional Programming:
   <http://math.andrej.com/2009/05/29/mathematically-structured-but-not-necessarily-functional-programming/ 
 >

Une nouvelle application demexp en web avec web2py:
   <https://bentobako.org/david/blog/index.php?post/2009/05/28/une-nouvelle-application-demexp-en-web-avec-web2py 
 >

When immutable data is faster: write barrier costs:
   <http://eigenclass.org/R2/writings/write-barrier-cost>

Lwt and Concurrent ML:
   <http://ambassadortothecomputers.blogspot.com/2009/05/lwt-and-concurrent-ml.html 
 >

OCaml Metrics:
   <http://forge.ocamlcore.org/projects/ocaml-metrics/>
			
========================================================================
Using folding to read the cwn in vim 6+
------------------------------------------------------------------------
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.

========================================================================
Old cwn
------------------------------------------------------------------------

If you happen to miss a CWN, you can send me a message
(alan.schmitt at polytechnique.org) and I'll mail it to you, or go take a  
look at
the archive (<http://alan.petitepomme.net/cwn/>) or the RSS feed of the
archives (<http://alan.petitepomme.net/cwn/cwn.rss>). If you also wish
to receive it every week by mail, you may subscribe online at
<http://lists.idyll.org/listinfo/caml-news-weekly/> .

========================================================================

-- 
Alan Schmitt <http://alan.petitepomme.net/>

The hacker: someone who figured things out and made something cool  
happen.
  .O.
  ..O
  OOO


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.idyll.org/pipermail/caml-news-weekly/attachments/20090602/4e94575f/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 195 bytes
Desc: This is a digitally signed message part
Url : http://lists.idyll.org/pipermail/caml-news-weekly/attachments/20090602/4e94575f/attachment-0001.pgp 


More information about the caml-news-weekly mailing list