Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parBénédict Rey Modifié depuis plus de 10 années
1
CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML
2
2 Introduction n ML est un langage fonctionnel a portee locale comme le Scheme. n Neanmoins, il differe du Scheme de facon significative: – Il utilise des declaration de types, des inferences de types et il est fortement type. Scheme, au contraire, nutilise pratiquement pas de types. – Il utilise une syntaxe plus proche du Pascal et du C que du Scheme. – ML fait du traitement dexception et il incorpore un module qui permet limplementation de types de donnees abstraites.
3
3 Types de Donnees Primitives et Symboles Reserves n Type de donnees Primitives: entiers, reels, booleens, chaines de caracteres. n Pour entiers et reels, ~ indique la negativite (e.g., ~3, ~2.4, etc.). n ML reconnait les majuscules et les minuscules (e.g.,True <> true). n Les caracteres de controle sont representes comme en C (e.g., \n pour aller a la ligne, \t pour tab, etc.).
4
4 Types de Donnees Structurees n Listes Mixtes (tuples): une sequence dobjets de types varies separes par des virgules et compris dans des parentheses. (E.g., (12, abc, 3) ou (2, a, (3, 4.3), xyz, (true, 7)). n Le n ieme membre dune liste mixte peut etre accede par #n (e.g.: #2(2, 4, 6) = 4) n Une liste est une liste mixte qui consiste dobjets du meme type. (e.g., [a, b, c, d] ou [[1,2],[3,4]]). n nil est la liste vide.
5
5 Types Definis par lUsager datatype identificateur = expression_de_type Examples: n datatype couleur = rouge | orange | vert; n datatype arbre = nul | noeud of int * arbre * arbre *arbre;
6
6 Attachements de Valeurs a des Identificateurs n val identificateur = expression; n Example: val X = 7 n Notez que = nest pas un symbole daffectation mais plutot un symbole dattachement: X = 8 retournerait false. n De plus, une fois quune valeur est attachee a X, on ne peut plus en attacher dautre, a moins que lon change denvironement en utilisant la construction: let val nom_d_environement = expression_1 in expression_2 end
7
7 Expressions I Expressions Arithmetiques: – Negation: ~, – operateurs multiplicatifs: *, /, div, mod, – operateurs additifs: +, - – operateurs relationnels: =, <>, >=,, <. Expressions Booleennes – andalso, orelse, not – andalso et orelse utilisent levaluation paresseuse. Expressions de chaines de caracteres – concatenation: ^ – exemple: abc ^ def = abcdef
8
8 Expressions II Expression Conditionnelle – if expression then partie_vrai else partie_fausse – la partie else nest pas optionelle. Expression de Boucle – while expression_1 do expression_2 – expression_2 doit changer lassociation dune variable dans lenvironement local pour que expression_1 puisse-t-etre changee. Expressions de Listes – tete de liste L: hd(L) – queue de liste L: tl(L) – constructtion de liste: hd(L)::tl(L) =L – fusion de deux listes: [1, 2] @ [3, 4] = [1,2,3,4] – coercion entre liste et chaine: explode, implode
9
9 Specifications et Definitions de Fonctions Specifications de Sequences (expression_1; expression_2; expression_3) Definition de Fonctions – fun nom_de_fonction (parametres) = expression; – Exemple: fun addition(a:int, b:int):int = a+b; – Note 1: int n a pas besoin d etre specifie partout – Note2: Les fonctions peuvent etre polymorphiques et il y a possibilite de « pattern matching »
10
10 Exceptions n ML permet aux programmeurs de definir des exceptions. Une exception est un evenement inhabituel (ou bien une erreur ou non) qui peut etre detecte par le hardware ou le logiciel et qui peut necessiter un traitement special. n ML a un systeme de traitement dexception qui intervient lorsquune exception est relevee. n Definition: exception nom_de_l_exception; n Invocation: raise nom_de_l_exception; n Traitement: expression handle traitement avec traitement(motif1) ==> expression1 traitement(motif2) ==> expression2 etc...
11
11 Passer des Fonctions comme Arguments n Comme en Scheme, les fonctions peuvent etre passees comme arguments: n Exemple: - fun fait_x(x:int --> int, y:int)= x(y); val fait_x = fn : (int --> int) * int --> int - fun double(x)= 2*x; val double = fn : int --> int - fait_x(double,4); val it = 8 : int
12
12 Fonctions Primitives: Entrée/Sortie n use nom_de_fichier (lit un programme) n print(x) (imprime un objet primitif x) n open_in(nom_de_fichier) (ouvre nom_de_fichier et retourne un pointeur de type instreamau fichier ouvert. n input(pointeur_fichier, t) (retourne une chaine de caracteres de longueur t constitues par les t caracteres consecutifs du fichier de reference) n end_of_stream(pointeur_fichier) retourne vrai si la fin du fichier a ete atteinte.
13
13 Autres Fonctions Primitives n hd(liste) (retourne le 1er element de la liste) n tl(liste) (retourne la liste constituee de tous les elements sauf le premier). n explode(chaine) (convertit chaine en une liste de chaines dun seul caractere) n implode(liste) (prend une liste de chaines et retourne une seule chaine) n size(chaine) (retourne le nombre de caracteres dans la chaine) n ord(x) (retourne la valeur numerique du caractere x) n chr(i) (retourne le caractere represente par la valeur numerique i.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.