Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Jean-Christophe Filliâtre : Programmation
Programmation Ocaml
À mes heures perdues, je développe quelques bricoles, principalement
en Objective Caml, un langage fonctionnel disposant d'une
excellente bibliothèque standard et d'un compilateur (bytecode et
natif) qui peut rivaliser avec gcc.
Le code Objective Caml étant entièrrement portable, vous pouvez recompiler
le code ci-dessous sur toutes les plate-formes supportées par
Objective Caml : Linux, un grand nombre d'UNIX commerciaux, mais aussi
MacOS, Windows, etc.
(sauf lorsque l'on utilise une spécificité d'un système, comme
la bibliothèque SVGAlib de Linux).
Sauf mention explicite du contraire, tout le code disponible sur
cette page est distribué selon les termes de la GNU Library
General Public License version 2, avec une exception concernant
l'édition de lien, décrite dans le fichier
LICENSE.
À propos des liens ci-dessous :
- Les .ps sont des fichiers PostScript
produits à partir du source OCaml grâce à ocamlweb.
- Les .ml et .mli ont été produits avec l'outil caml2html
de Sébastien Ailleret (maintenant Martin Jambon).
- Cliquer sur le nom de la bibliothèque / de l'application pour télécharger.
Bitv :
une bibliothèque de vecteurs de bits
(.ps |
.mli)
Bitset :
petits ensembles d'entiers codés par des vecteurs de bits
(.mli |
.ml)
Arbres de Patricia :
Ensembles et dictionnaires efficaces sur les entiers
(.ps |
ptset.mli |
ptmap.mli),
à partir d'un papier de Chris Okasaki
Voir aussi les modules Hashcons, Hset et Hmap ci-dessous
(pour utiliser les arbres de Patricia lorsque l'on fait du
hash-consing)
Hashset :
Ensembles codés par des tables de hachage (plus
simple à utiliser et légèrement plus compact que l'utilisation du
module Hashtbl)
(.ps |
.mli)
Ropes :
(.mli |
.ml)
WORK IN PROGRESS!
Un éditeur de texte vite-fait, mal-fait et incomplete utilisant
les cordes :
editor.ml (nécessite ocamlsdl, voir ci-dessous)
Rbuffer :
(.mli |
.ml)
Implantation du module Buffer à l'aide de cordes ;
pour des cordes d'usage général, voir ci-dessus.
Poly :
Polynômes à coefficients dans un anneau quelconque
(.mli |
.ml)
Bdd :
Diagrammes de décision binaires
(.mli |
README)
Bibliothèques
ocamlgraph, une bibliothèque de
graphes pour ocaml
cgi :
une bibliothèque pour écrire des scripts CGI
(.mli)
ocamlsvga :
interface pour de la bibliothèque Linux SVGAlib
ocamlsdl :
interface pour de la bibliothèque graphique SDL;
inclus le support OpenGL, pour être utilisé par exemple avec
lablGL
display :
visualisation de la représentation interne des valeurs Caml
(.ps |
.mli)
size :
calcul de l'occupation en mémoire d'une valeur Caml
(.ps |
.mli)
hashcons :
tables de hash pour le hash consing
(.ps |
.mli).
Cette technique est décrite dans
ce
papier. Hset / Hmap:
Modules Ptset et Ptmap (voir ci-dessus)
spécialisés sur les valeurs hash-consées
(hset.mli |
hmap.mli).
prtree :
pour imprimer des arbres à la manière de pstree
(.ps |
.mli)
search :
codes fonctorisés pour les recherches en profondeur, en
largeur, et en approfondissement itératif
(.ps |
.mli)
Triangulation de
Delaunay :
implantation de l'algorithme de D. Knuth présenté dans
Axioms and Hulls. Complexité : O(N log N) en temps (en moyenne) ;
toujours O(N) en espace.
S'applique à n'importe quel système CCC (voir Axioms and Hulls).
Note : ce module fait partie d'ocamlgraph mais peut
être utilisé indépendamment.
(.mli)