Le Programmateur

Les programmes du Programmateur !

Aller au contenu | Aller au menu | Aller à la recherche

CamL

CamL est un langage de programmation généraliste, conçu pour garantir la sûreté et la fiabilité des programmes. 

Il est très expressif et néanmoins facile d'apprentissage et d'emploi.

CamL se prête à la programmation dans un style fonctionnel, impératif ou orienté objets. Il est développé et distribué par l'INRIA depuis 1985.

Fil des billets - Fil des commentaires

29nov.

Simulation d'une calculatrice avec des listes en CamL

Je crois que tout est dans le titre ! Je définis ici quelques fonctions correspondant aux opérations standards sur les chiffres avant de définir une fonction d'évaluation de l'expressions. C'est en fait le même fonctionnement que dans une calculatrice.

type expression = Const of int
|Var of string
|Sum of expression * expression
|Diff of expression * expression
|Prod of expression * expression
|Quot of expression * expression ;;

Lire la suite

29nov.

Termes ouverts et termes fermés en CamL

Ce programme décrit tout d'abord quelques objets nécessaires (listes, arbres) et quelques fonctions associées, avant de s'attaquer à la définition des termes. Une fois les termes définis, je définis alors plusieurs fonctions liées au filtrage et à la substitution sur les termes. Bon courage !

(* Les Listes *) 
type 'a liste=Nil | Cons of 'a * 'a liste;;
let l1=Cons( 1,Cons( 2,Cons( 3,Cons( 4,Nil )  )  )  ) ;;
let l2=Cons( 5,Cons( 4,Cons( 3,Cons( 2,Nil )  )  )  ) ;;
let rec ( estTriee:'a liste -> bool  ) =function 
	Nil->true 
	|Cons( a,Nil ) ->true 
	|Cons( a,Cons( b,l )  ) ->( a<b ) && estTriee( Cons( b,l )  ) 
;;
estTriee( l1 ) ;;
estTriee( l2 ) ;;

Lire la suite

29nov.

Gestion d'une promotion d'étudiants en CamL

Ce programme est un exemple d'utilisation de CamL pour gérer une promotion, avec ses notes, ses épreuves, etc.

(*Une note est soit un chiffre soit une constante du type ABI(ABsence Injustifiée)*)
type Note = Chiffre of int |ABI|ABJ|DEFNote|DISNote|NoteNC;;
 
type Resultat = ADM|AJ|DEFRes|DISRes|ResNC;;
 
type Epreuve = RP|SSA|Comp|FASD|Anglais|Libre;;
 
(*Un étudiant est composé d'un nom, d'un prénom et d'un numéro d'étudiant*)
type Etudiant = Etu of (string * string * int);;

Lire la suite