Les types construits en OCaml

742 mots 3 pages
TYPES CONSTRUITS!

S5

Types construits
Les types construits ou explicites sont des types définis par l'utilisateur!
• Type somme!
• Type enregistrement!

Le type somme!
Le type somme correspond à une union de type que l'on distingue par un marqueur ou un label. !
Le type somme en tant que collection de symboles!
• Un questionnaire (oui, non, peut-être)!
Ex l'ADN: !
L'ADN ne contient que 4 bases, mais est traditionnellement codée par des caractères. Ce type admet aussi d'autres caractères. On décrit un type ayant 4 symboles seulement correspondant aux 4 bases. !
• type =|....|
• ::=
• type adn_t = A|T|G|C;;
On a défini un ensemble de 4 symboles {A,T,G,C}! application : base complémentaire! let complémentaire b= match b with
|A->T
|G->C
|T->A
|C->G;; let complémentaire b= match b with
|'A'->'T'
|'a'->'T'
|'G'->'C'
|'g'->'C'
|'T'->'A'
|'t'->'A'
|'C'->'G'
|'c'->'G'
|_-> failwith "erreur";;
Transformation d'une séquence d'ADN en séquence d'acides aminés:! type aminoacid_t=Leu|Typ|Met|Ser|...|Stop;; let codon2aa c= match c with
|(A,A,A)-> Lys
|(A,A,T)-> Asn

INTRODUCTION À L'ALGORITHMIQUE

1

TYPES CONSTRUITS!

S5

.
.
.
|(C,C,C)->Pro;;
let rec traduction s= match s with
|a1::a2::a3::r -> codon2aa (a1,a2,a3)::traduction r
|_->[];;
Autre utilisation des types sommes!
Les jours de la semaine!
Les mots ! les questionnaires oui, non, peut-être!
Type somme comme union! type numérique (entier+flottant)! type numeric_t= Int of int |Float of float;; let x = Int 3;; let y= Float 3.5;;
Ex: addition pour le numérique! let add n1 n2= match (n1,n2) with
|(Int x1, Int x2) -> Int x1+x2
|(Float x1, Float x2) -> Float x1+.x2
|(Int x1, Float x2) -> Float (float_of_int x1)+.x2
|(Float x1, Int x2) -> Float (x1+.(float_of_int x2));;
Type somme récursif! type rec () =
Type liste entier!
'a::'a list |[] type rec 'a list_t=Empty|Cell int * intlist;; autre exemple, arbre binaire! type rec inttree=

en relation

  • Fiche de lecture madchester - identity in the world’s first industrial city
    1641 mots | 7 pages
  • Notice pioneer cdj 800
    377 mots | 2 pages
  • maths dm
    250 mots | 1 page
  • Axe marque
    2603 mots | 11 pages
  • festyvet
    352 mots | 2 pages
  • Passif agressif
    2675 mots | 11 pages
  • Synthese francais decembre 2012 pierrard
    1005 mots | 5 pages
  • Andreannecot
    456 mots | 2 pages
  • Bts ag 2ème année anglais dev1
    1837 mots | 8 pages
  • Fiche d'arrêt par une décisions de la cour d'appel 13 septembre 2013
    835 mots | 4 pages
  • Texte philosophique
    1151 mots | 5 pages
  • jean moulin
    1032 mots | 5 pages
  • au front
    355 mots | 2 pages
  • Mouvement humaniste
    3916 mots | 16 pages
  • Code de procedure
    45813 mots | 184 pages