juin
2010
Un exercice simple pour débutant en ocaml c’est d’écrire un interpréteur pour un petit langage simple comme par exemple une calculatrice : type arithmetic = | Cst of int | Neg of arithmetic | Add of binary | Sub of binary | Mul of binary | Div of binary and binary = arithmetic * arithmetic Mais cet exercice anodin change complètement de nature quand on passe à un langage fortement normalisant, dans ce cas vous […]
mars
2010
Sylvain Le Gall et l’équipe organisatrice de la 3ième rencontre des programmeurs Objective-Caml vous donnent rendez-vous le 16 Avril à Paris. Malheureusement je ne pourrai pas être présent cette année.
février
2010
Le tas binaire est un tableau qui implémente un arbre pseudo-complet vérifiant la propriété de tas. Un tableau est de taille fixe. Par conséquent un tas binaire est borné, on ne peut y insérer qu’un nombre fixe et limité d’éléments. Bien sûr on pourrait redimensionner le tableau dynamiquement, mais cela a un impact négatif sur le coût des opérations. Qu’on prêche le style impératif ou le style fonctionnel est étrangé à l’affaire. La bonne question […]
janvier
2010
Un MIME (Multipurpose Internet Mail Extension) est une information système pour identifier les types de fichier et leur affecter certains attributs comme une commande par défaut ou une icône personnalisée. Ce billet vous propose d’agrémenter votre station de développement Objective-Caml à l’aide d’un MIME pour vos fichiers source. Bien sûr ça n’est qu’un exemple que vous pourrez adapter à votre application ou à votre langage de programmation favori.
janvier
2010
Le billet d’aujourd’hui a pour but de faire toute la lumière sur la qualification à l’intérieur des modules Objective-Caml.
novembre
2009
Hier, afin d’illustrer l’usage de LablGtk2, le binding GTK+ pour le langage Objective-Caml j’ai posté le code de ce Hello Developpez tout ce qu’il y a de plus basique : Toutefois, une comparaison ligne à ligne avec la version Gtk2Hs pour Haskell, grâcieusement postée par Alp, n’était pas possible puisque mon code n’utilisait pas libglade.
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!