<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>Commentaires pour Le blog de SpiceGuid</title>
	<atom:link href="https://blog.developpez.com/damien-guichard/comments/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/damien-guichard</link>
	<description></description>
	<lastBuildDate>Wed, 10 Apr 2013 06:56:07 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Commentaires sur Qu&#8217;est-ce qu&#8217;un langage fonctionnel ? par Le blog de SpiceGuid &#124; Bonnes Pratiques Web &#124; S...</title>
		<link>https://blog.developpez.com/damien-guichard/p8623/programmation-fonctionnelle/qu_est_ce_que_la_programmation_fonctionn#comment-22</link>
		<dc:creator><![CDATA[Le blog de SpiceGuid &#124; Bonnes Pratiques Web &#124; S...]]></dc:creator>
		<pubDate>Wed, 10 Apr 2013 06:56:07 +0000</pubDate>
		<guid isPermaLink="false">#comment-22</guid>
		<description><![CDATA[[...] Qu&#8217;est-ce qu&#8217;un langage fonctionnel ?&#160; [...]]]></description>
		<content:encoded><![CDATA[<p>[&#8230;] Qu&rsquo;est-ce qu&rsquo;un langage fonctionnel ?&nbsp; [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Conférence F# à l&#8217;EPITA par spiceguid</title>
		<link>https://blog.developpez.com/damien-guichard/p8306/programmation-fonctionnelle/conference_f_a_l_epita#comment-9</link>
		<dc:creator><![CDATA[spiceguid]]></dc:creator>
		<pubDate>Wed, 18 Nov 2009 20:59:28 +0000</pubDate>
		<guid isPermaLink="false">#comment-9</guid>
		<description><![CDATA[C&#039;est plus une question de plateforme que de recherche publique/privée. Par exemple Scala est issue de la recherche publique (EPFL) et ça marche très bien commercialement puisque Twitter et LinkedIn l&#039;ont adopté.&lt;br /&gt;
Moi j&#039;aime  bien le code natif mais le dynamisme commercial est plus du côté web et JVM / dotnet. C&#039;est d&#039;ailleurs sans doute la faute à Microsoft qui tend à étouffer la concurrence commerciale sur le bureau.&lt;br /&gt;
&lt;br /&gt;
En lui-même F# n&#039;est pas du tout représentatif des technos fermées propriétaires et des pratiques de vente liée. Sans être un logiciel libre c&#039;est un produit gratuit et dont la source est disponible.&lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p>C&rsquo;est plus une question de plateforme que de recherche publique/privée. Par exemple Scala est issue de la recherche publique (EPFL) et ça marche très bien commercialement puisque Twitter et LinkedIn l&rsquo;ont adopté.<br />
Moi j&rsquo;aime  bien le code natif mais le dynamisme commercial est plus du côté web et JVM / dotnet. C&rsquo;est d&rsquo;ailleurs sans doute la faute à Microsoft qui tend à étouffer la concurrence commerciale sur le bureau.</p>
<p>En lui-même F# n&rsquo;est pas du tout représentatif des technos fermées propriétaires et des pratiques de vente liée. Sans être un logiciel libre c&rsquo;est un produit gratuit et dont la source est disponible.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Conférence F# à l&#8217;EPITA par cacophrene</title>
		<link>https://blog.developpez.com/damien-guichard/p8306/programmation-fonctionnelle/conference_f_a_l_epita#comment-8</link>
		<dc:creator><![CDATA[cacophrene]]></dc:creator>
		<pubDate>Wed, 18 Nov 2009 20:22:29 +0000</pubDate>
		<guid isPermaLink="false">#comment-8</guid>
		<description><![CDATA[Salut !&lt;br /&gt;
&lt;br /&gt;
Merci beaucoup pour ce message. Effectivement ça ouvre de nouveaux horizons (intéressants) sur la manière d&#039;appréhender F# et le « mouvement » qu&#039;il a contribué à mettre en route. &lt;br /&gt;
&lt;br /&gt;
À titre personnel, donc sans réel argument de fond, je regrette un peu que ce soit une entreprise comme Microsoft qui ait su franchir le cap. Ça donne à penser sur la manière de gérer les politiques de recherche et les partenariats industriels en France (en informatique comme ailleurs; le problème est le même en biologie et sans doute dans la quasi totalité des disciplines scientifiques).&lt;br /&gt;
&lt;br /&gt;
Bonne soirée,&lt;br /&gt;
Cacophrène]]></description>
		<content:encoded><![CDATA[<p>Salut !</p>
<p>Merci beaucoup pour ce message. Effectivement ça ouvre de nouveaux horizons (intéressants) sur la manière d&rsquo;appréhender F# et le « mouvement » qu&rsquo;il a contribué à mettre en route. </p>
<p>À titre personnel, donc sans réel argument de fond, je regrette un peu que ce soit une entreprise comme Microsoft qui ait su franchir le cap. Ça donne à penser sur la manière de gérer les politiques de recherche et les partenariats industriels en France (en informatique comme ailleurs; le problème est le même en biologie et sans doute dans la quasi totalité des disciplines scientifiques).</p>
<p>Bonne soirée,<br />
Cacophrène</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Conférence F# à l&#8217;EPITA par spiceguid</title>
		<link>https://blog.developpez.com/damien-guichard/p8306/programmation-fonctionnelle/conference_f_a_l_epita#comment-7</link>
		<dc:creator><![CDATA[spiceguid]]></dc:creator>
		<pubDate>Wed, 11 Nov 2009 19:40:05 +0000</pubDate>
		<guid isPermaLink="false">#comment-7</guid>
		<description><![CDATA[La grande idée est avant tout pragmatique: il s&#039;agit d&#039;utiliser dotnet pour briser la barrière qui sépare les langages dits académiques des langages dits industriels.&lt;br /&gt;
&lt;br /&gt;
En tant que langage F# est un peu moins ambitieux que ocaml, mais en tant qu&#039;outil il a l&#039;avantage de fournir immédiatement l&#039;accès à la quasi totalité des ressources logicielles disponibles sur une plateforme très populaire.&lt;br /&gt;
Par ailleurs l&#039;influence de F# sur C# et la plateforme dotnet en général se fait déjà sentir et elle est très positive à mon avis.&lt;br /&gt;
&lt;br /&gt;
La question la plus évidente c&#039;est: pourquoi ne pas avoir opté pour 100% de compatibilité avec ocaml ? &lt;br /&gt;
L&#039;explication c&#039;est la POO de ocaml qui est trop atypique et par conséquent invendable au public visé et qui se marrie mal avec le reste du parc logiciel dotnet.&lt;br /&gt;
&lt;br /&gt;
F# se donne beaucoup plus de chances de réussir à prolonger l&#039;existant en adoptant une POO proche de C#.&lt;br /&gt;
F# offre à la programmation fonctionnelle ce qu&#039;elle n&#039;a jamais eu auparavant: un chemin évolutionnaire au lieu d&#039;un chemin révolutionnaire.&lt;br /&gt;
 &lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p>La grande idée est avant tout pragmatique: il s&rsquo;agit d&rsquo;utiliser dotnet pour briser la barrière qui sépare les langages dits académiques des langages dits industriels.</p>
<p>En tant que langage F# est un peu moins ambitieux que ocaml, mais en tant qu&rsquo;outil il a l&rsquo;avantage de fournir immédiatement l&rsquo;accès à la quasi totalité des ressources logicielles disponibles sur une plateforme très populaire.<br />
Par ailleurs l&rsquo;influence de F# sur C# et la plateforme dotnet en général se fait déjà sentir et elle est très positive à mon avis.</p>
<p>La question la plus évidente c&rsquo;est: pourquoi ne pas avoir opté pour 100% de compatibilité avec ocaml ? <br />
L&rsquo;explication c&rsquo;est la POO de ocaml qui est trop atypique et par conséquent invendable au public visé et qui se marrie mal avec le reste du parc logiciel dotnet.</p>
<p>F# se donne beaucoup plus de chances de réussir à prolonger l&rsquo;existant en adoptant une POO proche de C#.<br />
F# offre à la programmation fonctionnelle ce qu&rsquo;elle n&rsquo;a jamais eu auparavant: un chemin évolutionnaire au lieu d&rsquo;un chemin révolutionnaire.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Conférence F# à l&#8217;EPITA par cacophrene</title>
		<link>https://blog.developpez.com/damien-guichard/p8306/programmation-fonctionnelle/conference_f_a_l_epita#comment-6</link>
		<dc:creator><![CDATA[cacophrene]]></dc:creator>
		<pubDate>Wed, 11 Nov 2009 18:48:03 +0000</pubDate>
		<guid isPermaLink="false">#comment-6</guid>
		<description><![CDATA[Salut !&lt;br /&gt;
&lt;br /&gt;
Bienheureux les gens de l&#039;EPITA qui ont droit à une conférence sur F#, car on dit tout et son contraire sur ce nouveau langage. &lt;br /&gt;
&lt;br /&gt;
Ce serait vraiment sympa d&#039;avoir un bref résumé des grandes idées qui auront été développées lors de la conférence. J&#039;imagine que beaucoup de caméliens se demandent, comme moi : pourquoi et comment F# ? Et pour l&#039;instant les infos disponibles sur le net sont de qualité variable.&lt;br /&gt;
&lt;br /&gt;
Cordialement,&lt;br /&gt;
Cacophrène]]></description>
		<content:encoded><![CDATA[<p>Salut !</p>
<p>Bienheureux les gens de l&rsquo;EPITA qui ont droit à une conférence sur F#, car on dit tout et son contraire sur ce nouveau langage. </p>
<p>Ce serait vraiment sympa d&rsquo;avoir un bref résumé des grandes idées qui auront été développées lors de la conférence. J&rsquo;imagine que beaucoup de caméliens se demandent, comme moi : pourquoi et comment F# ? Et pour l&rsquo;instant les infos disponibles sur le net sont de qualité variable.</p>
<p>Cordialement,<br />
Cacophrène</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Plus d&#8217;arguments sans application partielle par ylarvor</title>
		<link>https://blog.developpez.com/damien-guichard/p8151/programmation-fonctionnelle/plus_d_arguments_sans_application_partie#comment-18</link>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
		<pubDate>Mon, 05 Oct 2009 12:20:37 +0000</pubDate>
		<guid isPermaLink="false">#comment-18</guid>
		<description><![CDATA[mes efforts portent leurs fruits, je comprends tes articles. Je n&#039;en suis pas encore à librement écrire en programmation fonctionnel.]]></description>
		<content:encoded><![CDATA[<p>mes efforts portent leurs fruits, je comprends tes articles. Je n&rsquo;en suis pas encore à librement écrire en programmation fonctionnel.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le type somme fermée de produits ouverts par gasche</title>
		<link>https://blog.developpez.com/damien-guichard/p7844/programmation-fonctionnelle/le_type_somme_fermee_de_produits_ouverts#comment-17</link>
		<dc:creator><![CDATA[gasche]]></dc:creator>
		<pubDate>Thu, 27 Aug 2009 00:11:01 +0000</pubDate>
		<guid isPermaLink="false">#comment-17</guid>
		<description><![CDATA[Ici j&#039;utilise un objet pour avoir des champs nommés, ce qui augmente la lisibilité quand tu as plus de 2/3 &quot;champs&quot; (au détriment de la concision, effectivement).&lt;br /&gt;
&lt;br /&gt;
Effectivement, si tu pensais au sous-typage, il n&#039;est pas utile dans ce cas : pour en profiter et avoir un type extensible, il faudrait rajouter des variantes polymophes et un type dérecursifié.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# type (&#039;a, &#039;n) _tree = [ `Empty of &#039;e &#124; `Black of &#039;b * &#039;n ]&#160;&lt;br /&gt;
constraint &#039;a = &lt; e : &#039;e; b : &#039;b; .. &gt;;;&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
# type &#039;a tree = (&#039;a, &#039;a tree) _tree;;&#160;&lt;br /&gt;
(* -rectypes, sinon constructeur supplémentaire *)&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
# type (&#039;a, &#039;n) _rbtree = [(&#039;a, &#039;n) _tree &#124; `Red of &#039;r * &#039;n]&#160;&lt;br /&gt;
constraint &#039;a = &lt; r : &#039;r; .. &gt;;;&#160;&lt;br /&gt;
(* on n&#039;a pas besoin de rementionner les autres champs dans la contrainte *)&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
# type &#039;a rbtree = (&#039;a, &#039;a rbtree) _rbtree;;&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
# let test = `Black (1, `Empty ());;&#160;&lt;br /&gt;
val test : [&gt; `Black of int * [&gt; `Empty of unit ] ] = `Black (1, `Empty ())&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
# (test : _ tree);;&#160;&lt;br /&gt;
- : &lt; b : int; e : unit; .. &gt; tree = `Black (1, `Empty ())&#160;&lt;br /&gt;
&#160;&lt;br /&gt;
# (test : _ rbtree);;&#160;&lt;br /&gt;
- : &lt; b : int; e : unit; r : &#039;a; .. &gt; rbtree = `Black (1, `Empty ())&lt;/code&gt;&lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p>Ici j&rsquo;utilise un objet pour avoir des champs nommés, ce qui augmente la lisibilité quand tu as plus de 2/3 &laquo;&nbsp;champs&nbsp;&raquo; (au détriment de la concision, effectivement).</p>
<p>Effectivement, si tu pensais au sous-typage, il n&rsquo;est pas utile dans ce cas : pour en profiter et avoir un type extensible, il faudrait rajouter des variantes polymophes et un type dérecursifié.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># type ('a, 'n) _tree = [ `Empty of 'e | `Black of 'b * 'n ]&amp;nbsp;&lt;br /&gt;<br />
constraint 'a = &amp;lt; e : 'e; b : 'b; .. &amp;gt;;;&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;<br />
# type 'a tree = ('a, 'a tree) _tree;;&amp;nbsp;&lt;br /&gt;<br />
(* -rectypes, sinon constructeur supplémentaire *)&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;<br />
# type ('a, 'n) _rbtree = [('a, 'n) _tree | `Red of 'r * 'n]&amp;nbsp;&lt;br /&gt;<br />
constraint 'a = &amp;lt; r : 'r; .. &amp;gt;;;&amp;nbsp;&lt;br /&gt;<br />
(* on n'a pas besoin de rementionner les autres champs dans la contrainte *)&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;<br />
# type 'a rbtree = ('a, 'a rbtree) _rbtree;;&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;<br />
# let test = `Black (1, `Empty ());;&amp;nbsp;&lt;br /&gt;<br />
val test : [&amp;gt; `Black of int * [&amp;gt; `Empty of unit ] ] = `Black (1, `Empty ())&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;<br />
# (test : _ tree);;&amp;nbsp;&lt;br /&gt;<br />
- : &amp;lt; b : int; e : unit; .. &amp;gt; tree = `Black (1, `Empty ())&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp;&lt;br /&gt;<br />
# (test : _ rbtree);;&amp;nbsp;&lt;br /&gt;<br />
- : &amp;lt; b : int; e : unit; r : 'a; .. &amp;gt; rbtree = `Black (1, `Empty ())</div></div>
<p></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le type somme fermée de produits ouverts par spiceguid</title>
		<link>https://blog.developpez.com/damien-guichard/p7844/programmation-fonctionnelle/le_type_somme_fermee_de_produits_ouverts#comment-16</link>
		<dc:creator><![CDATA[spiceguid]]></dc:creator>
		<pubDate>Thu, 27 Aug 2009 00:08:24 +0000</pubDate>
		<guid isPermaLink="false">#comment-16</guid>
		<description><![CDATA[&lt;strong&gt;constraint&lt;/strong&gt; ouvre des perspectives intéressantes, par exemple la composition au niveau des types :&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&#160;&lt;br /&gt;
type (&#039;v,&#039;u) compose =&#160;&lt;br /&gt;
&#160; &#039;a -&gt; &#039;c&#160;&lt;br /&gt;
constraint &#039;u = &#039;a -&gt; &#039;b&#160;&lt;br /&gt;
constraint &#039;v = &#039;b -&gt; &#039;c&#160;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p><strong>constraint</strong> ouvre des perspectives intéressantes, par exemple la composition au niveau des types :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&amp;nbsp;&lt;br /&gt;<br />
type ('v,'u) compose =&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; 'a -&amp;gt; 'c&amp;nbsp;&lt;br /&gt;<br />
constraint 'u = 'a -&amp;gt; 'b&amp;nbsp;&lt;br /&gt;<br />
constraint 'v = 'b -&amp;gt; 'c&amp;nbsp;&lt;br /&gt;</div></div>
<p></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le type somme fermée de produits ouverts par spiceguid</title>
		<link>https://blog.developpez.com/damien-guichard/p7844/programmation-fonctionnelle/le_type_somme_fermee_de_produits_ouverts#comment-15</link>
		<dc:creator><![CDATA[spiceguid]]></dc:creator>
		<pubDate>Wed, 26 Aug 2009 23:43:44 +0000</pubDate>
		<guid isPermaLink="false">#comment-15</guid>
		<description><![CDATA[Il y a un intérêt spécifique à utiliser un type objet alors que ça marche aussi bien avec un type tuple ?&lt;br /&gt;
 &lt;br /&gt;
&lt;code&gt;&#160;&lt;br /&gt;
type &#039;a node = &#160;&lt;br /&gt;
&#160; &#124; Empty of &#039;e &#160;&lt;br /&gt;
&#160; &#124; Red of &#039;r * &#039;a node &#160;&lt;br /&gt;
&#160; &#124; Black of &#039;b * &#039;a node &#160;&lt;br /&gt;
constraint &#039;a = &#039;e * &#039;r * &#039;b&#160;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
C&#039;est un peu moins verbeux :&lt;br /&gt;
&lt;code&gt;&#160;&lt;br /&gt;
# Black (1,Empty ());;&#160;&lt;br /&gt;
- : (unit * &#039;a * int) node = Black (1, Empty ())&#160;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p>Il y a un intérêt spécifique à utiliser un type objet alors que ça marche aussi bien avec un type tuple ?</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&amp;nbsp;&lt;br /&gt;<br />
type 'a node = &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; | Empty of 'e &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; | Red of 'r * 'a node &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; | Black of 'b * 'a node &amp;nbsp;&lt;br /&gt;<br />
constraint 'a = 'e * 'r * 'b&amp;nbsp;&lt;br /&gt;</div></div>
<p>C&rsquo;est un peu moins verbeux :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&amp;nbsp;&lt;br /&gt;<br />
# Black (1,Empty ());;&amp;nbsp;&lt;br /&gt;<br />
- : (unit * 'a * int) node = Black (1, Empty ())&amp;nbsp;&lt;br /&gt;</div></div>
<p></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le type somme fermée de produits ouverts par spiceguid</title>
		<link>https://blog.developpez.com/damien-guichard/p7844/programmation-fonctionnelle/le_type_somme_fermee_de_produits_ouverts#comment-14</link>
		<dc:creator><![CDATA[spiceguid]]></dc:creator>
		<pubDate>Wed, 26 Aug 2009 21:45:05 +0000</pubDate>
		<guid isPermaLink="false">#comment-14</guid>
		<description><![CDATA[Oui c&#039;est bof l&#039;absence de prévisualisation sur les commentaires.&lt;br /&gt;
&lt;br /&gt;
Bon, que dire, sinon que tu m&#039;étonne toujours par ton expertise sur des aspects d&#039;ocaml peu documentés.&lt;br /&gt;
&lt;br /&gt;
Un exemple d&#039;instanciation du type &#039;a node :&lt;br /&gt;
&lt;code&gt;&#160;&lt;br /&gt;
type int_node =&#160;&lt;br /&gt;
&#160; &lt; empty : unit; red : int; black : int &gt; node&#160;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Qu&#039;on pourrait dérouler comme ceci :&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&#160;&lt;br /&gt;
type int_node = &#160;&lt;br /&gt;
&#160; &#124; Empty of unit &#160;&lt;br /&gt;
&#160; &#124; Red of int * int_node &#160;&lt;br /&gt;
&#160; &#124; Black of int * int_node &#160;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Inconvénient perceptible: les types inférés sont plus verbeux que si on avait juste plusieurs paramètres.&lt;br /&gt;
&lt;code&gt;&#160;&lt;br /&gt;
# Red (1,Empty ());;&#160;&lt;br /&gt;
- : &lt; black : &#039;a; empty : unit; red : int &gt; node = Red (1, Empty ())&#160;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p>Oui c&rsquo;est bof l&rsquo;absence de prévisualisation sur les commentaires.</p>
<p>Bon, que dire, sinon que tu m&rsquo;étonne toujours par ton expertise sur des aspects d&rsquo;ocaml peu documentés.</p>
<p>Un exemple d&rsquo;instanciation du type &lsquo;a node :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&amp;nbsp;&lt;br /&gt;<br />
type int_node =&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &amp;lt; empty : unit; red : int; black : int &amp;gt; node&amp;nbsp;&lt;br /&gt;</div></div>
<p>Qu&rsquo;on pourrait dérouler comme ceci :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&amp;nbsp;&lt;br /&gt;<br />
type int_node = &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; | Empty of unit &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; | Red of int * int_node &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; | Black of int * int_node &amp;nbsp;&lt;br /&gt;</div></div>
<p>Inconvénient perceptible: les types inférés sont plus verbeux que si on avait juste plusieurs paramètres.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&amp;nbsp;&lt;br /&gt;<br />
# Red (1,Empty ());;&amp;nbsp;&lt;br /&gt;<br />
- : &amp;lt; black : 'a; empty : unit; red : int &amp;gt; node = Red (1, Empty ())&amp;nbsp;&lt;br /&gt;</div></div>
<p></p>
]]></content:encoded>
	</item>
</channel>
</rss>
