novembre
2009
Gconfs, l’association de conférences de l’école EPITA organise une conférence F#, ce Jeudi 12 novembre 2009 à 21 h, cours pasteur 14,16 rue Voltaire au Kremlin-Bicêtre. Les conférenciers sont Laurent Le Brun et un auteur d’ouvrage sur F# dont le nom n’a pas été communiqué. Pour plus d’informations sur cet évènement consultez la page évènements de GConfs ou le forum forum news épita. mise à jour: l’autre conférencier est Robert Pickering, auteur de Foundations of […]
octobre
2009
Motifs variable Comme vous le savez sans doute le let ne permet pas seulement de déclarer une nouvelle variable par exemple ici la variable m : let choose = function | None -> None | Some n -> let m = minimum n n.left in Some (m.key,m.item) Motifs simples Il permet aussi de déconstruire une valeur selon un motif comme ici la paire (m,l) : let rec delete_min t = match t.left with | None […]
octobre
2009
À la lecture de The Art of the Propagator je me suis laissé convaincre que l’avenir de la programmation déclarative était dans la propagation logique. L’intérêt de la propagation c’est que le calcul monodirectionnel disparaît, le calcul devient multi-directionnel, la béta-réduction devient la béta-équivalence. Jusqu’à présent je m’étais toujours dit « et alors, quel intérêt ? ». C’est là que The Art of the Propagator apporte un argument de poids : le calcul monodirectionnel suppose un temps […]
octobre
2009
Dans mon petit exemple de ce jour on va utiliser l’application partielle pour faire l’inverse de ce qu’on en fait habituellement. Au lieu d’éliminer un argument on va au contraire en ajouter un supplémentaire. L’idée de départ c’est que, étant donné un opérateur diadic (supposé associatif à droite), nous l’appliquons deux fois pour pouvoir opérer sur 3 arguments: let triadic op a b c = op a (op b c);; Une application partielle sert à […]
octobre
2009
Encore plus fort! Plus d’arguments mais cette fois-ci sans application partielle! Vous conviendrez aisément que cette fonction ne prend qu’un seul argument: let id x = x Hé bien je peux, mesdames et messieurs, devant vos yeux ébahis, lui appliquer 4 arguments: # id id (+) 1 2;; – : int = 3 Et c’est bien typé! Incroyable, ils sont fous ces programmeurs fonctionnels!
septembre
2009
GtkMathView est un widget GTK+ pour l’affichage des formules au standard MathML. Un binding GtkMathView pour LablGtk2 est disponible (encadré « more download » en bas à gauche de la page d’accueil) : en paquets pour Debian (liblablgtkmathview-ocaml et liblablgtkmathview-ocaml-dev) en sources Je n’ai personnellement pas tenté d’installer ce composant, je vous invite à laisser un commentaire si vous avez fait l’expérience.
septembre
2009
S’il y a une chose qui m’étonne c’est qu’avec toutes les abstractions à la disposition du programmeur OCaml il soit encore difficile d’implanter correctement un TAD ensemble. Dans ma bibliothèque de structures de données (OCaml-Idaho) j’ai opté pour une implantation par arbre de recherche équilibré. La cohérence de mes fonctions de comparaison est assurée par un paramétrage par les modules. Grâce aux higher-order modules on peut associer chaque type à une valeur. En associant le […]
septembre
2009
J’ai installé Eastwest, un langage intégré avec un éditeur dirigé par la syntaxe dont j’ai parlé dans mon précédent billet. C’est sympathique mais encore très expérimental. À titre de démonstration voici un petit dérivateur formel pour Eastwest. Je me suis quand même un peu fait avoir sur cet exemple parce que Eastwest accepte les constantes float dans les motifs mais en fait il les traite comme de nouvelles variables. Du coup mon code qui paraît […]
août
2009
Eastwest est un langage jouet intégré avec un éditeur dirigé par la syntaxe. Eastwest s’appuye sur OSET, le O’Caml Structure Editor Toolkit, un framework pour éditeurs structurés basé sur LablGtk2. Eastwest est une démonstration étonnante de ce que non seulement Objective-Caml n’est pas réservé qu’à des programmes console mais qu’il peut même être en avance en matière d’interfaces interactives.
juillet
2009
Le billet d’aujourd’hui a pour but de désamorcer une difficulté courante et propre à entraver l’usage des classes en Objective-Caml. Le style de programmation encouragé par Objective-Caml tend à marginaliser le recours à une POO d’encapsulation où les classes auraient pour objectif essentiel de limiter la propagation des effets hors d’une certaine portée. En présence de valeurs immutables cet usage des classes comme un moyen de componentisation, si essentiel en POO impérative, perd tout ou […]