<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Il y a du thé renversé au bord de la table</title>
	<atom:link href="http://dutherenverseauborddelatable.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dutherenverseauborddelatable.wordpress.com</link>
	<description>De l'actualité, de l'informatique, de l'enseignement, d'intenses réflexions et quelques autres absurdités</description>
	<pubDate>Wed, 16 Jul 2008 10:21:30 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>fr</language>
			<item>
		<title>Just married</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2008/07/16/just-married/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2008/07/16/just-married/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 10:21:30 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
		
		<category><![CDATA[En français / In French]]></category>

		<category><![CDATA[just married]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=109</guid>
		<description><![CDATA[Bon, retour au boulot&#8230;
       ]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Bon, retour au boulot&#8230;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dutherenverseauborddelatable.wordpress.com/109/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dutherenverseauborddelatable.wordpress.com/109/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/109/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&blog=1202429&post=109&subd=dutherenverseauborddelatable&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2008/07/16/just-married/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/yoric-128.jpg" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
		<item>
		<title>Faut que je m&#8217;absente&#8230;</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2008/07/06/faut-que-je-mabsente/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2008/07/06/faut-que-je-mabsente/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 22:20:15 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
		
		<category><![CDATA[En français / In French]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=108</guid>
		<description><![CDATA[Interruption d&#8217;une dizaine de jours pour le blog. Je reviendrai la bague au doigt.
       ]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Interruption d&#8217;une dizaine de jours pour le blog. Je reviendrai la bague au doigt.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dutherenverseauborddelatable.wordpress.com/108/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dutherenverseauborddelatable.wordpress.com/108/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&blog=1202429&post=108&subd=dutherenverseauborddelatable&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2008/07/06/faut-que-je-mabsente/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/yoric-128.jpg" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
		<item>
		<title>Extrapol update</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2008/07/04/extrapol-update/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2008/07/04/extrapol-update/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 11:09:01 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
		
		<category><![CDATA[Extrapol]]></category>

		<category><![CDATA[In English / En anglais]]></category>

		<category><![CDATA[Informatique / Computer science]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[OCaml]]></category>

		<category><![CDATA[Recherche / Research]]></category>

		<category><![CDATA[Sûreté / Security]]></category>

		<category><![CDATA[abstract interpretation]]></category>

		<category><![CDATA[applied research]]></category>

		<category><![CDATA[c++]]></category>

		<category><![CDATA[caml]]></category>

		<category><![CDATA[checking]]></category>

		<category><![CDATA[code analysis]]></category>

		<category><![CDATA[comprehension]]></category>

		<category><![CDATA[computer science]]></category>

		<category><![CDATA[dependent types]]></category>

		<category><![CDATA[free software]]></category>

		<category><![CDATA[fundamental research]]></category>

		<category><![CDATA[library]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[mac]]></category>

		<category><![CDATA[mandatory access control]]></category>

		<category><![CDATA[model]]></category>

		<category><![CDATA[open-source]]></category>

		<category><![CDATA[policies]]></category>

		<category><![CDATA[program analysis]]></category>

		<category><![CDATA[release]]></category>

		<category><![CDATA[research]]></category>

		<category><![CDATA[science]]></category>

		<category><![CDATA[security]]></category>

		<category><![CDATA[security analysis]]></category>

		<category><![CDATA[security policies]]></category>

		<category><![CDATA[selinux]]></category>

		<category><![CDATA[semantics]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[source code analysis]]></category>

		<category><![CDATA[standard library]]></category>

		<category><![CDATA[static analysis]]></category>

		<category><![CDATA[threat]]></category>

		<category><![CDATA[threat analysis]]></category>

		<category><![CDATA[type systems]]></category>

		<category><![CDATA[type theory]]></category>

		<category><![CDATA[types and effects]]></category>

		<category><![CDATA[vulnerability analysis]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=107</guid>
		<description><![CDATA[A quick work regarding the current status of Extrapol and its release.
Development of Extrapol progresses. With our current set of sample, Extrapol works flawlessly. We&#8217;re now adding features, improving error reporting and de-hard-wiring the model of the C standard library from the tool and moving it towards an external configuration file as well as progressively [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A quick work regarding the current status of Extrapol and its release.</p>
<p style="text-align:justify;">Development of Extrapol progresses. With our current set of sample, Extrapol works flawlessly. We&#8217;re now adding features, improving error reporting and de-hard-wiring the model of the C standard library from the tool and moving it towards an external configuration file as well as progressively moving towards larger and more realistic samples. Development will come to an abrupt (and temporary) halt at the end of this week, though, due to personal matters (i.e. I&#8217;m getting married).</p>
<p style="text-align:justify;">The release planned for next week, on the other hand, is canceled. As the research field of applied security is very competitive, and after careful discussion with the rest of my research team, we have decided to only release a version of Extrapol after the scientific content has been accepted for publication in a conference or journal. At the request of one of the institutes which founds this research, I will also refrain from posting detailed information on the theory and algorithms behind Extrapol, until these are cleared by the institute and accepted for publication. Without entering the details, Extrapol is expected to serve in critical infrastructures, which explains the need for clearance.</p>
<p style="text-align:justify;">However, rest assured that there <em>will</em> be a release and it <em>will</em> be open-source (presumably licenced under a combination of MIT and LGPL). The only question is when &#8212; and this probably won&#8217;t happen before November.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dutherenverseauborddelatable.wordpress.com/107/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dutherenverseauborddelatable.wordpress.com/107/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/107/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&blog=1202429&post=107&subd=dutherenverseauborddelatable&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2008/07/04/extrapol-update/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/yoric-128.jpg" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
		<item>
		<title>Improving exception-management in OCaml</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2008/07/02/improving-exception-management-in-ocaml/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2008/07/02/improving-exception-management-in-ocaml/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 14:46:28 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
		
		<category><![CDATA[In English / En anglais]]></category>

		<category><![CDATA[Informatique / Computer science]]></category>

		<category><![CDATA[OCaml]]></category>

		<category><![CDATA[Recherche / Research]]></category>

		<category><![CDATA[camlp4]]></category>

		<category><![CDATA[catch]]></category>

		<category><![CDATA[code generation]]></category>

		<category><![CDATA[code rewriting]]></category>

		<category><![CDATA[compiler support]]></category>

		<category><![CDATA[coverage]]></category>

		<category><![CDATA[error]]></category>

		<category><![CDATA[error management]]></category>

		<category><![CDATA[exceptional situation]]></category>

		<category><![CDATA[exceptions]]></category>

		<category><![CDATA[Functional Programming]]></category>

		<category><![CDATA[guarantees]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[languages]]></category>

		<category><![CDATA[ml]]></category>

		<category><![CDATA[monad]]></category>

		<category><![CDATA[performance]]></category>

		<category><![CDATA[preprocessor]]></category>

		<category><![CDATA[Programmation Fonctionnelle]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[programming languages]]></category>

		<category><![CDATA[rewriting]]></category>

		<category><![CDATA[sml]]></category>

		<category><![CDATA[static analysis]]></category>

		<category><![CDATA[syntactic sugar]]></category>

		<category><![CDATA[try]]></category>

		<category><![CDATA[type-safe]]></category>

		<category><![CDATA[typed]]></category>

		<category><![CDATA[types]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=105</guid>
		<description><![CDATA[Catch me if you can is a small library for OCaml 3.10. The latest release is version 0.2, which you may find <a href="http://www.univ-orleans.fr/lifo/Members/David.Teller/software/exceptions/catch_0_2.tgz">here</a>. This library improves management of errors in OCaml. It is released under the LGPL licence. It has been written by David Teller, Arnaud Spiwack, Till Varoquaux and Gabriel Scherer.]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h2 style="text-align:justify;">Short version</h2>
<p style="text-align:justify;">Catch me if you can is a small library for OCaml 3.10. The latest release is version 0.2, which you may find <a href="http://www.univ-orleans.fr/lifo/Members/David.Teller/software/exceptions/catch_0_2.tgz">here</a>. This library improves management of errors in OCaml. It is released under the LGPL licence. It has been written by David Teller, Arnaud Spiwack, Till Varoquaux and Gabriel Scherer.</p>
<p><span id="more-105"></span></p>
<hr />
<h2><strong>Long version<br />
</strong></h2>
<p align="justify">As all languages of the ML family &#8212; and most modern languages indeed &#8212; OCaml permits the management of exceptional situations using <em>exceptions</em>. This mechanism lets programmer register protected sections of code, as well as <em>exception handlers</em> to handle any exception which may be <em>raised</em> during the execution of a protected section. Whenever an exception is <em>raised</em>, the protected section of code is immediately stopped and the corresponding exception handler is executed instead. In addition, exceptions may convey some information regarding the nature of the exceptional circumstance.</p>
<p align="justify">In OCaml, the mechanism is fast, it&#8217;s convenient and it&#8217;s type-safe, much like the rest of the language (barring any type-unsafe interaction with C). However, a few things are missing. If we consider the rest of the language, exceptions are both heavyweight and clumsy: each exception must be declared before being used and there&#8217;s no way to introduce a polymorphic type parameter in the exception. In addition, languages such as Java offer to important features missing in OCaml: automatic case coverage and exception hierarchies. While <a href="http://caml.inria.fr/pub/old_caml_site/ocamlexc/ocamlexc.htm">a nice tool</a> exists  to provide case coverage for exceptions in OCaml, this tool is complex and  unfortunately unmaintained.</p>
<p align="justify"><em>Catch me if you can</em> offers an alternative mechanism, comparable to ML exceptions, to handle errors. In comparison with OCaml&#8217;s native exception mechanism, this library adds:</p>
<ul>
<li>automatic inference of exceptions (i.e. no need to declare your exceptions, unless you want to)</li>
<li>more flexible exceptions (i.e. exceptions may have polymorphic type parameters, constraints, etc.)</li>
<li>hierarchies (i.e. an IOException is a sub-case of Exception and a super-case of NetworkException)</li>
<li>case coverage (i.e. the compiler can tell you if you forgot a case or sometimes if you wrote useless ones)</li>
<li>conditional success handlers (i.e. do something with the result in case of success)</li>
<li>conditional success-and-failure handlers (i.e. &#8220;finally&#8221;).</li>
</ul>
<p style="text-align:justify;">To attain this, we replace the mechanism of exceptions by an error monad, we replace exception constructors with polymorphic variants and we introduce a dose of syntactic sugar.</p>
<hr />
<h2>Examples</h2>
<h3>Expression evaluator</h3>
<p>Let&#8217;s write a simple expression evaluator for the following set of expressions:</p>
<pre name="code" class="python">

type expr =
  | Value of float
  | Div     of expr * expr
  | Add    of expr * expr
  | Mult   of expr * expr
  | Subs  of expr * expr
</pre>
<p>These may be evaluated using the following function:</p>
<pre name="code" class="python">

let rec eval = function
 | Value x    -&gt; x
 | Add (x,y) -&gt; eval x +. eval y
 | Mult(x,y)  -&gt; eval x *. eval y
 | Div(x,y)   -&gt; eval x /. eval y
 | Subs(x,y) -&gt; eval x -. eval y
</pre>
<p style="text-align:justify;">Of course, this function is bound to fail in case of division by zero. While this is expected, there is nothing in the source code &#8212; much less in the type of the function &#8212; to let us know which exception will be raised in case of division by zero.</p>
<p>An alternative would be to add manual error checking, as follows:</p>
<pre name="code" class="python">

type (&#039;a, &#039;b) result =
 | Ok of &#039;a
 | Error of &#039;b

let rec eval = function
 | Value x    -&gt; OK x
 | Add (x,y) -&gt; (match eval x with
                      | Error e -&gt; Error e
                      | Ok x&#039; -&gt;  match eval y with
                               | Error e -&gt; Error e
                               | Ok y&#039;    -&gt; Ok (x&#039; +. y&#039;))
 | Mult (x,y) -&gt; (match eval x with
                      | Error e -&gt; Error e
                      | Ok x&#039; -&gt;  match eval y with
                               | Error e -&gt; Error e
                               | Ok y&#039;    -&gt; Ok (x&#039; *. y&#039;))
 | Div (x,y) -&gt; (match eval x with
                      | Error e -&gt; Error e
                      | Ok x&#039; -&gt;  match eval y with
                               | Error e -&gt; Error e
                               | Ok y&#039;    -&gt; if y&#039; = 0. then Error &quot;Division by zero&quot;
                                                else              Ok (x&#039; /. y&#039;))
 | Subs (x,y) -&gt; (match eval x with
                      | Error e -&gt; Error e
                      | Ok x&#039; -&gt;  match eval y with
                               | Error e -&gt; Error e
                               | Ok y&#039;    -&gt; Ok (x&#039; -. y&#039;))
(*eval : expr -&gt; (float, string) result*)
</pre>
<p style="text-align:justify;">After this transformation, the type of the exception appears in the type of <code>eval</code> &#8212; here, we used strings, but anything else would have been fine. Of course, the downside is that this is unreadable. Well, what about the following ?</p>
<pre name="code" class="python">

let rec eval = function
 | Value x    -&gt; return x
 | Add (x,y) -&gt; perform with module Error
                        x&#039; &lt;-- eval x;
                        y&#039; &lt;-- eval y;
                        return (x&#039; +. y&#039 <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
 | Mult (x,y) -&gt; perform with module Error
                        x&#039; &lt;-- eval x;
                        y&#039; &lt;-- eval y;
                        return (x&#039; *. y&#039 <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
 | Div (x,y) -&gt; perform with module Error
                        x&#039; &lt;-- eval x;
                        y&#039; &lt;-- eval y;
                        if y&#039;=0. then throw &quot;Division by zero&quot;
                        else            return (x&#039; /. y&#039 <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
 | Subs (x,y) -&gt; perform with module Error
                        x&#039; &lt;-- eval x;
                        y&#039; &lt;-- eval y;
                        return (x&#039; -. y&#039 <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
(*eval : expr -&gt; (float, string) result*)
</pre>
<p style="text-align:justify;">This extract uses [our customized version of] Pa_monad (included in the package), which brings syntactic support for monads. While this is more verbose than the original version, it&#8217;s also safer, insofar as we can guarantee that exceptions won&#8217;t remain uncaught.</p>
<p>Still too long? Then what about using the appropriate operators?</p>
<pre name="code" class="python">

open Error.Operators
let rec eval = function
 | Value x    -&gt; x
 | Add (x,y) -&gt; eval x +. eval y
 | Mult(x,y) -&gt; eval x *. eval y
 | Div(x,y)   -&gt; eval x /. eval y
 | Subs(x,y) -&gt; eval x -. eval y
</pre>
<p>Except for the module opening, that&#8217;s the same thing as our first listing. Just with the added safety.</p>
<h3>Throwing, catching and hierarchies</h3>
<p>By the way, the type of the result is</p>
<pre name="code" class="python">

(*eval : expr -&gt; (float, [&gt; `Arithmetic of (unit, [&gt; `Div_by_zero of (unit, _) exc ]) exc ]) result*)
</pre>
<p>That is, eval may either succeed and return a float or fail and return an arithmetic exception, which also turns out to be a division by zero. That&#8217;s classes of exceptions.</p>
<p>With our syntactic sugar, raising such an exception is done by</p>
<pre name="code" class="python">

throw (exception Arithmetic (); Div_by_zero ())
</pre>
<p style="text-align:justify;">Note that we could have put some content instead of <code>()</code>. Note that exceptions are typed as they appear in the code and don&#8217;t need to be declared (if you wonder, polymorphic variants are involved in this).</p>
<p>Of course, various kinds of exceptions may be combined, as in the following extract:</p>
<pre name="code" class="python">

match ... with
| 1 -&gt; throw (exception Arithmetic (); Div_by_zero ())
| 2 -&gt; throw (exception Arithmetic (); Overflow &quot;by gosh !&#038;quot <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
| 3 -&gt; throw (exception IO file_descr)
| ...
(*
(&#039;a, [&gt; `Arithmetic of (unit, [&gt; `Div_by_zero of (unit, _) exc
                                     |   `Overflow of (string, _)   exc]) exc
     |   `IO of (int, [`&gt; ]) exc ]) result*)
*)
</pre>
<p>While the type of the expression is difficult to read, catching is easy</p>
<pre name="code" class="python">

attempt ... with
 | val s -&gt; (*success*)
 | Arithmetic (); Div_by_zero () -&gt; (*Division by zero*)
 | Arithmetic (); _                   -&gt; (*Other arithmetic*)
 | IO _                                  -&gt; (*Some IO stuff *)
 | finally _                             -&gt; (*Don&#039;t forget to close the door*)
</pre>
<p>This extract introduces three keywords:</p>
<ul>
<li><code>attempt</code> is our replacement for <code>try</code></li>
<li><code>val</code> is used to pattern-match against the result of a successful evaluation</li>
<li><code>finally</code> is used to pattern-match against the final result, whether this result was obtained after a successful evaluation or after an exception was raised and handled.</li>
</ul>
<h3>Unbreaking tail-recursion</h3>
<p>The following extract is wrong:</p>
<pre name="code" class="python">

let line_count filename =
  let rec loop file count =
  try
    ignore (input_line file);
    loop file (count + 1)
  with
    End_of_file -&gt; count
  in
    loop (open_file filename) 0
</pre>
<p align="justify">Don&#8217;t get me wrong, it will compile and run. The problem is that it&#8217;s not tail-recursive. In other words, it will be much slower and much more memory-consuming than if exceptions had been ignored. Why ? Because exception End_of_file may have been raised from the next call to loop, so the recursive call cannot be optimized into a non-recursive call. Of course, exceptions can&#8217;t be ignored in this extract, as they are required to determine when to stop reading the file. Now, a simple transformation would make the problem go away :</p>
<pre name="code" class="python">

let line_count filename =
  let rec loop file count =
    let should_continue =
    try
      ignore (input_line file);
      true
    with End_of_file -&gt; false
  in
    if should_continue then loop file (count + 1)
    else                    count
  in
    loop (open_file filename) 0
</pre>
<p style="text-align:justify;">Well, the transformation is simple, but it&#8217;s annoying and hard to read. What&#8217;s even more annoying is that it&#8217;s quite common. With Catch me if you can, we would rather write the following:</p>
<pre name="code" class="python">

let input_line2 x = Error.legacy input_line x

let line_count filename =
  let rec loop file count =
    attempt input_line2 file with
      | val _ -&gt; loop file (count + 1)
      | _     -&gt; count
  in
  loop (open_file filename) 0
</pre>
<p style="text-align:justify;">In this extract, legacy is a simple manner of wrapping an existing, one-argument, function and convert it to our new exception style. It&#8217;s not quite as good as wrapping the function manually and giving it an actual exception, but it&#8217;s better than nothing.</p>
<p align="justify">All in all, the resulting function line_count is shorter, easier to read, takes less memory and is also faster than the original.</p>
<h2>What about performance?</h2>
<p style="text-align:justify;">Now, that&#8217;s a complex question. Short answer: there&#8217;s an acceptable performance loss. False short answer: we wrote a <a href="http://www.univ-orleans.fr/lifo/Members/David.Teller/publications/ml2008.pdf">paper</a> on that subject.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dutherenverseauborddelatable.wordpress.com/105/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dutherenverseauborddelatable.wordpress.com/105/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/105/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&blog=1202429&post=105&subd=dutherenverseauborddelatable&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2008/07/02/improving-exception-management-in-ocaml/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/yoric-128.jpg" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
		<item>
		<title>More monad exceptions for OCaml</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2008/06/26/more-monad-exceptions-for-ocaml/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2008/06/26/more-monad-exceptions-for-ocaml/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 23:38:51 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
		
		<category><![CDATA[Informatique / Computer science]]></category>

		<category><![CDATA[OCaml]]></category>

		<category><![CDATA[Recherche / Research]]></category>

		<category><![CDATA[benchmark]]></category>

		<category><![CDATA[camlp4]]></category>

		<category><![CDATA[dynamic errors]]></category>

		<category><![CDATA[error management]]></category>

		<category><![CDATA[errors]]></category>

		<category><![CDATA[exceptions]]></category>

		<category><![CDATA[haskell]]></category>

		<category><![CDATA[ml]]></category>

		<category><![CDATA[monad]]></category>

		<category><![CDATA[obj.magic]]></category>

		<category><![CDATA[optimization]]></category>

		<category><![CDATA[phantom types]]></category>

		<category><![CDATA[polymorphic variants]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[programming languages]]></category>

		<category><![CDATA[research]]></category>

		<category><![CDATA[rewriting]]></category>

		<category><![CDATA[semantics]]></category>

		<category><![CDATA[sml]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[syntactic sugar]]></category>

		<category><![CDATA[type system]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=102</guid>
		<description><![CDATA[A new version of the exception monad for OCaml is now available for download. It&#8217;s now richer, comes with extensive syntactic sugar and a brand new system of compile-time optimizations. More on this in the corresponding research paper &#8212; and whenever I find the time, on this blog.
       ]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">A new version of the exception monad for OCaml is now available <a href="http://www.univ-orleans.fr/lifo/Members/David.Teller/software/exceptions/catch_0_2.tgz">for download</a>. It&#8217;s now richer, comes with extensive syntactic sugar and a brand new system of compile-time optimizations. More on this in the corresponding <a href="http://www.univ-orleans.fr/lifo/Members/David.Teller/publications/ml2008.pdf">research paper</a> &#8212; and whenever I find the time, on this blog.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dutherenverseauborddelatable.wordpress.com/102/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dutherenverseauborddelatable.wordpress.com/102/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&blog=1202429&post=102&subd=dutherenverseauborddelatable&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2008/06/26/more-monad-exceptions-for-ocaml/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/yoric-128.jpg" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
		<item>
		<title>Extrapol and Korset</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2008/06/19/extrapol-and-korset/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2008/06/19/extrapol-and-korset/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 10:57:05 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
		
		<category><![CDATA[Extrapol]]></category>

		<category><![CDATA[In English / En anglais]]></category>

		<category><![CDATA[Informatique / Computer science]]></category>

		<category><![CDATA[OCaml]]></category>

		<category><![CDATA[Recherche / Research]]></category>

		<category><![CDATA[Sûreté / Security]]></category>

		<category><![CDATA[blackhat]]></category>

		<category><![CDATA[code analysis]]></category>

		<category><![CDATA[complete]]></category>

		<category><![CDATA[dependent types]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[korset]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[research]]></category>

		<category><![CDATA[safety]]></category>

		<category><![CDATA[safety analysis]]></category>

		<category><![CDATA[security]]></category>

		<category><![CDATA[security analysis]]></category>

		<category><![CDATA[security policies]]></category>

		<category><![CDATA[selinux]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[sound]]></category>

		<category><![CDATA[static analysis]]></category>

		<category><![CDATA[type system]]></category>

		<category><![CDATA[type theory]]></category>

		<category><![CDATA[types]]></category>

		<category><![CDATA[types and effects]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=99</guid>
		<description><![CDATA[A colleague recently pointed me towards Korset, a program developed by Ohad Ben-Cohen and Avishai Wool promising features comparable to Extrapol. While I must admit I&#8217;m slightly skeptical about the promise of &#8220;provable zero false alarm&#8221; &#8212; since the problem is undecidable, usually people tend to develop &#8220;provably complete&#8221; rather than &#8220;provably sound&#8221; analysis &#8212; [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">A colleague recently pointed me towards <a href="http://www.linuxsymposium.org/2008/view_bio.php?id=2348">Korset</a>, a program developed by Ohad Ben-Cohen and Avishai Wool promising features comparable to Extrapol. While I must admit I&#8217;m slightly skeptical about the promise of &#8220;provable zero false alarm&#8221; &#8212; since the problem is undecidable, usually people tend to develop &#8220;provably complete&#8221; rather than &#8220;provably sound&#8221; analysis &#8212; it sounds like an interesting development.</p>
<p style="text-align:justify;">Now, from what I understand, Korset will be presented to Blackhat in a few months, and the rules of the conference forbid the developers from giving away any detail. Until then, we have no way of comparing the unreleased Extrapol and the equally unreleased Korset.</p>
<p style="text-align:justify;"><strong>Note:</strong> the tarball for the first prototype of Extrapol is waiting on my hard-drive for release clearance. I hope I&#8217;ll be able to release it next Tuesday or Wednseday. Stay tuned.</p>
<p style="text-align:justify;">
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dutherenverseauborddelatable.wordpress.com/99/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dutherenverseauborddelatable.wordpress.com/99/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/99/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&blog=1202429&post=99&subd=dutherenverseauborddelatable&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2008/06/19/extrapol-and-korset/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/yoric-128.jpg" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
		<item>
		<title>Firefox 3 est sorti</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2008/06/18/firefox-3-est-sorti/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2008/06/18/firefox-3-est-sorti/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 14:23:48 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
		
		<category><![CDATA[En français / In French]]></category>

		<category><![CDATA[Firefox]]></category>

		<category><![CDATA[Informatique / Computer science]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=98</guid>
		<description><![CDATA[Le titre de ce billet devrait se suffire. Pour consulter la liste des améliorations récentes ou télécharger cette nouvelle version, rendez-vous sur getfirefox.com.
       ]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Le titre de ce billet devrait se suffire. Pour consulter la liste des améliorations récentes ou télécharger cette nouvelle version, rendez-vous sur <a href="http://getfirefox.com">getfirefox.com</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dutherenverseauborddelatable.wordpress.com/98/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dutherenverseauborddelatable.wordpress.com/98/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/98/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&blog=1202429&post=98&subd=dutherenverseauborddelatable&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2008/06/18/firefox-3-est-sorti/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/yoric-128.jpg" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
		<item>
		<title>Extrapol source code available (not)</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2008/06/17/extrapol-source-code-available/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2008/06/17/extrapol-source-code-available/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 16:08:16 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
		
		<category><![CDATA[Extrapol]]></category>

		<category><![CDATA[In English / En anglais]]></category>

		<category><![CDATA[Informatique / Computer science]]></category>

		<category><![CDATA[OCaml]]></category>

		<category><![CDATA[Recherche / Research]]></category>

		<category><![CDATA[Sûreté / Security]]></category>

		<category><![CDATA[batteries included]]></category>

		<category><![CDATA[ast]]></category>

		<category><![CDATA[c++]]></category>

		<category><![CDATA[code analysis]]></category>

		<category><![CDATA[dependent types]]></category>

		<category><![CDATA[effets]]></category>

		<category><![CDATA[gcc]]></category>

		<category><![CDATA[lexer]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[parser]]></category>

		<category><![CDATA[quality]]></category>

		<category><![CDATA[safety]]></category>

		<category><![CDATA[scanner]]></category>

		<category><![CDATA[security]]></category>

		<category><![CDATA[security analysis]]></category>

		<category><![CDATA[security policies]]></category>

		<category><![CDATA[security policy]]></category>

		<category><![CDATA[selinux]]></category>

		<category><![CDATA[source code]]></category>

		<category><![CDATA[sourec analysis]]></category>

		<category><![CDATA[static analysis]]></category>

		<category><![CDATA[subversion]]></category>

		<category><![CDATA[svn]]></category>

		<category><![CDATA[type system]]></category>

		<category><![CDATA[types]]></category>

		<category><![CDATA[types and effects]]></category>

		<category><![CDATA[types with effects]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=96</guid>
		<description><![CDATA[A quick note to inform you that the repository for Extrapol is now public. The source code as available on the repository does not have a licence yet and will not compile as such, due to dependencies on libraries available somewhere else. Stay tuned for an actual release.
Update: Sorry, repository cut off by the administrator. [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">A quick note to inform you that the <a href="http://">repository</a> for Extrapol is now public. The source code as available on the repository does not have a licence yet and will not compile as such, due to dependencies on libraries available <a href="http://forge.ocamlcore.org/projects/batteries/">somewhere else</a>. Stay tuned for an actual release.</p>
<p style="text-align:justify;"><strong>Update:</strong> Sorry, repository cut off by the administrator. I&#8217;ll inform you when the sources are back.</p>
<p style="text-align:justify;">Note rapide pour vous informer que le <a href="https://www.sds-project.fr/svn/extrapol/trunk/specs/ml">code source</a> d&#8217;Extrapol est maintenant disponible au public. Il ne s&#8217;agit pas encore d&#8217;une version officielle &#8212; en particulier, le code n&#8217;a pas encore de licence et il manque des bibliothèques (<a href="http://forge.ocamlcore.org/projects/batteries/">disponibles ailleurs</a>). Plus de détails dès qu&#8217;une version officielle est disponible.</p>
<p style="text-align:justify;"><strong>Additif:</strong> Désolé, je viens d&#8217;apprendre que le dépôt de source a été isolé par l&#8217;administrateur. Je vous tiendrai au courant dès que le code source est de nouveau public.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dutherenverseauborddelatable.wordpress.com/96/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dutherenverseauborddelatable.wordpress.com/96/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/96/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&blog=1202429&post=96&subd=dutherenverseauborddelatable&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2008/06/17/extrapol-source-code-available/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/yoric-128.jpg" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
		<item>
		<title>L&#8217;appel du 19 juin</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2008/06/17/lappel-du-19-juin/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2008/06/17/lappel-du-19-juin/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 09:12:27 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
		
		<category><![CDATA[En français / In French]]></category>

		<category><![CDATA[Enseignement]]></category>

		<category><![CDATA[Recherche / Research]]></category>

		<category><![CDATA[Société]]></category>

		<category><![CDATA[liquidator]]></category>

		<category><![CDATA[science]]></category>

		<category><![CDATA[université]]></category>

		<category><![CDATA[fonctionnaires]]></category>

		<category><![CDATA[chercheurs]]></category>

		<category><![CDATA[réformes]]></category>

		<category><![CDATA[enseignants]]></category>

		<category><![CDATA[ultra-libéralisme]]></category>

		<category><![CDATA[privatisation]]></category>

		<category><![CDATA[Parti au Pouvoir]]></category>

		<category><![CDATA[liquidation]]></category>

		<category><![CDATA[recherche]]></category>

		<category><![CDATA[en entendrons-nous parler ?]]></category>

		<category><![CDATA[19 juin]]></category>

		<category><![CDATA[cnrs]]></category>

		<category><![CDATA[inserm]]></category>

		<category><![CDATA[recherche scientifique]]></category>

		<category><![CDATA[ling bling]]></category>

		<category><![CDATA[mobilisation]]></category>

		<category><![CDATA[manifestation]]></category>

		<category><![CDATA[pas encore une émeute]]></category>

		<category><![CDATA[réforme des institutions]]></category>

		<category><![CDATA[panique]]></category>

		<category><![CDATA[recherche fondamentale]]></category>

		<category><![CDATA[bêtise]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=94</guid>
		<description><![CDATA[Sans commentaires :

Au passage, je pense que ceci fera une bonne entrée pour le jeu permanent &#8220;En entendrons-nous parler ?&#8221; Ça y est, j&#8217;ai fini mon tour. Aux médias.
       ]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Sans commentaires :</p>
<p style="text-align:center;"><a href="http://www.sauvonslarecherche.fr/spip.php?article1966"><img src="http://www.sauvonslarecherche.fr/IMG/jpg/Affiche_SLR-18juin-A4.jpg" alt="Appel du 19 juin" width="540" height="720" /></a></p>
<p style="text-align:left;">Au passage, je pense que ceci fera une bonne entrée pour le jeu permanent &#8220;En entendrons-nous parler ?&#8221; Ça y est, j&#8217;ai fini mon tour. Aux médias.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dutherenverseauborddelatable.wordpress.com/94/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dutherenverseauborddelatable.wordpress.com/94/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/94/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&blog=1202429&post=94&subd=dutherenverseauborddelatable&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2008/06/17/lappel-du-19-juin/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/yoric-128.jpg" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>

		<media:content url="http://www.sauvonslarecherche.fr/IMG/jpg/Affiche_SLR-18juin-A4.jpg" medium="image">
			<media:title type="html">Appel du 19 juin</media:title>
		</media:content>
	</item>
		<item>
		<title>Gentils camionneurs contre méchants fonctionnaires</title>
		<link>http://dutherenverseauborddelatable.wordpress.com/2008/06/16/gentils-camionneurs-contre-mechants-fonctionnaires/</link>
		<comments>http://dutherenverseauborddelatable.wordpress.com/2008/06/16/gentils-camionneurs-contre-mechants-fonctionnaires/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 22:52:47 +0000</pubDate>
		<dc:creator>yoric</dc:creator>
		
		<category><![CDATA[En français / In French]]></category>

		<category><![CDATA[Société]]></category>

		<category><![CDATA[35 heures]]></category>

		<category><![CDATA[35h]]></category>

		<category><![CDATA[bien-aimé président]]></category>

		<category><![CDATA[camionneurs]]></category>

		<category><![CDATA[censure]]></category>

		<category><![CDATA[en entendrons-nous parler ?]]></category>

		<category><![CDATA[escargot]]></category>

		<category><![CDATA[fonctionnaires]]></category>

		<category><![CDATA[gouvernement]]></category>

		<category><![CDATA[journal]]></category>

		<category><![CDATA[journal télévisé]]></category>

		<category><![CDATA[licenciements]]></category>

		<category><![CDATA[liquidation du service public]]></category>

		<category><![CDATA[liquidator]]></category>

		<category><![CDATA[otages]]></category>

		<category><![CDATA[Parti au Pouvoir]]></category>

		<category><![CDATA[privatisation]]></category>

		<category><![CDATA[ratp]]></category>

		<category><![CDATA[service public]]></category>

		<category><![CDATA[sncf]]></category>

		<category><![CDATA[trente-cinq heures]]></category>

		<category><![CDATA[ultra-libéralisme]]></category>

		<category><![CDATA[usagers]]></category>

		<guid isPermaLink="false">http://dutherenverseauborddelatable.wordpress.com/?p=93</guid>
		<description><![CDATA[Suite du jeu &#8220;en entendrons-nous parler ?&#8221;, commencé dans le billet précédent. Cette fois-ci, la question concerne les méchants employés de la SNCF, qui ne font rien qu&#8217;à prendre les usagers en otages, par opposition aux gentils camionneurs, qui eux organisent des opérations escargot.
Aujourd&#8217;hui, c&#8217;était le début des épreuves écrites du bac, le journal télévisé [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Suite du jeu &#8220;en entendrons-nous parler ?&#8221;, commencé dans le billet précédent. Cette fois-ci, la question concerne les méchants employés de la SNCF, qui ne font rien qu&#8217;à <em>prendre les usagers en otages</em>, par opposition aux gentils camionneurs, qui eux <em>organisent des opérations escargot</em>.</p>
<p style="text-align:justify;">Aujourd&#8217;hui, c&#8217;était le début des épreuves écrites du bac, le journal télévisé en a abondamment parlé. C&#8217;était aussi le jour d&#8217;une opération escargot que les sympathiques camionneurs ont décidé de ne commencer qu&#8217;après le début des épreuves. Ce point aussi a été abondamment mentionné par le journal télévisé. Et c&#8217;était aussi le jour d&#8217;une grève de la SNCF, qui n&#8217;a elle-même pas commencé avant 9h du matin, heure à laquelle les candidats étaient normalement tous face à leurs copies.</p>
<p style="text-align:justify;">Donc, pour l&#8217;épreuve numéro deux de &#8220;En entendrons-nous parler ?&#8221;, je propose le sujet : entendrons-nous parler du fait que les employés de la SNCF n&#8217;a pas commencé elle non plus avant le début des écrits ?</p>
<p style="text-align:justify;">Question subsidiaire : sachant que le journal télévisé a dit et répété que les camionneurs faisaient grève contre la hausse des prix du carburant (circonstance sur laquelle le gouvernement ne peut pas grand chose), le journal télévisé mentionnera-t-il la raison de la grève de la SNCF ? Pour information, il s&#8217;agissait de la défense des 35h, qui elle est liée à la politique du Parti au Pouvoir.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dutherenverseauborddelatable.wordpress.com/93/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dutherenverseauborddelatable.wordpress.com/93/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dutherenverseauborddelatable.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dutherenverseauborddelatable.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dutherenverseauborddelatable.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dutherenverseauborddelatable.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dutherenverseauborddelatable.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dutherenverseauborddelatable.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dutherenverseauborddelatable.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dutherenverseauborddelatable.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dutherenverseauborddelatable.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dutherenverseauborddelatable.wordpress.com/93/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dutherenverseauborddelatable.wordpress.com&blog=1202429&post=93&subd=dutherenverseauborddelatable&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dutherenverseauborddelatable.wordpress.com/2008/06/16/gentils-camionneurs-contre-mechants-fonctionnaires/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/yoric-128.jpg" medium="image">
			<media:title type="html">yoric</media:title>
		</media:content>
	</item>
	</channel>
</rss>