Logiciels
Les codes ci-dessous prennent la forme de librairies pour le langage OCaml (Objective Caml). Il s'agit d'un langage fonctionnel fortement typé, qui permet une excellente abstraction tout en possédant une bonne efficacité.
Lacaml
Lacaml est un binding aux célèbres librairies
BLAS et
LAPACK qui offrent
des routines d'algèbre linéaire. Il a été développé en
collaboration avec Markus
Mottl et plusieurs autres personnes. Son utilisation
suppose une familiatité avec BLAS et LAPACK. Les
quick reference
guide for the BLAS et
LAPACK
quick reference vous seront utiles. Pour les détails,
consultez les « man pages »
en
ligne ou, si vous les
avez installées sur votre machine (sous Linux, elles doivent
être dans les packages de votre distribution), lisez les grâce à
Emacs : M-x man
(sous Unix) ou M-x
woman
(sur tous les systèmes, après avoir mis
(add-to-list 'woman-manpath "C:/path/to/lapack/manpages/blas/man")
(add-to-list 'woman-manpath "C:/path/to/lapack/manpages/man")
dans votre ~/.emacs
).
Delimited overloading
Delimited
overloading (pa_do
) est une extension de
syntaxe (grâce à camlp4) qui permet une surcharge d'opérateurs
extensible en OCaml. Il effectue également certaines
optimisations, par exemple pour des expressions comprenant des
nombres complexes.
OCaml odepack
OCaml odepack est un binding à odepack, une collection de routines pour approcher les solutions de problèmes de Cauchy.
Mesh
Mesh offre une interface unifiée à plusieurs générateurs de triangulations 2D (en particulier triangle). Il possède également des fonctions permettant de visualiser les mesh et les fonctions P1 définies dessus.
L-BFGS-B
Le module lbfgs est une interface au code FORTRAN L-BFGS-B. Il fournit une méthode quasi-Newton à mémoire limitée pour les problèmes de minimisation sans contraintes ou contraints par des bornes sur les variables.
1D integration
Le module Integration1D rassemble diverses méthodes d'intégration inspirées de QUADPACK. Il est composé uniquement de code OCaml.
1D optimization
Le package
optimization1d consiste en deux modules,
Min1D
et Max1D
, qui fournissent
des méthodes pour la recherche de minimums ou maximums de
fonctions
mathématiques f : R → R.
Il est composé uniquement de code OCaml.
1D root finding
Le module Root1D fournit des fonctions, en particulier la méthode de Brent, pour la recherche de racines de fonctions mathématiques f : R → R. Il est composé uniquement de code OCaml.
Module FFTW 3
Le module Fftw3 est un binding aux célèbres routines de transformée de Fourier rapide FFTW.
Les bindings à l'ancienne version, FFTW2, ne sont plus mis à jour.
oasis2opam
oasis2opam est un outil permettant de convertir les méta-données d'OASIS en description de packages OPAM.
OCaml Lego Mindstorm library
Le module Mindstorm vous permet de piloter des robots Lego® Mindstorm NXT via le protocole de communication bluetooth. Il a été utilisé par trois étudiants de mathématique pour programmer deux robots : un qui sort d'un labyrinthe et un autre qui résout le Rubik's cube. Vous pouvez lire leur interview.
OCaml CSV
OCaml CSV est un module qui permet de lire et d'écrire des fichiers CSV (comma separated values). Il comprend les particularités d'Excel (qui ne respectent pas le standard).
Benchmark
Benchmark est un module pour mesurer et comparer les temps d'exécution de fonctions écrites en OCaml.
Rope library
Le module Rope est une implémentation de la structure de donnée « rope », une forme efficace de chaines de caractères non-mutables. Le module est suffisament développé pour remplacer les chaines de caractères d'OCaml dans une majorité de cas.
OCamlDBI
OCamlDBI est une interface générérique aux bases de données inspirée du module Perl DBI.
OCaml-FreeTDS
Le module Freetds offre une interface à l'API DB-lib de FreeTDS ainsi qu'une interface plus ancienne à ct. Il est recommandé d'utiliser OCamlDBI (qui utilise ce module de manière interne) pour disposer de fonctions de plus haut niveau.
Lpd
La bibliothèque Lpd (Line Printer Deamon) est un serveur pour le protocole LPD entièrement écrit en OCaml (et donc totalement opérationnelle sous windows). Elle vous permet d'écrire vos propres fonctions réagissant aux commandes d'impression.
ANSITerminal
ANSITerminal est un module permettant d'utiliser les couleurs et les mouvements arbitraires du curseur des terminaux ANSI. Voici son interface.
OCaml-gnuplot
OCaml-gnuplot est un module qui utilise gnuplot pour réaliser des graphes scientifiques à partir d'OCaml.
Ce module est considéré obsolète et ne recevra que des corrections de bugs. Il sera remplacé par le module Archimedes (en développement) qui ne dépend plus de gnuplot.