Haut PDF [PDF] Tutorial Haskell pour le développeur C | Formation informatique

[PDF] Tutorial Haskell pour le développeur C | Formation informatique

[PDF] Tutorial Haskell pour le développeur C | Formation informatique

Qu'en est-il d'Haskell ? Haskell possède une évaluation paresseuse et possède un système de références totalement transparent. Si vous passez une valeur à une fonction, elle ne sera pas mise à jour, ce qui implique que GHC peut supposer cela. En particulier, il n'y a jamais besoin de copier une valeur lorsqu'on la passe en argument à une fonction, ou de la relire. Ainsi une fonction prenant en argument une liste et renvoyant une partie de cette liste ne copiera rien. Comme aucune mise à jour n'est possible, il n'y aucun danger de référencer la version originale. Cela permet de faire des grosses économies en mémoire, ce qui se traduit par moins de lecture en mémoire et moins de fautes de pages. Autre élément important, étant donné que l'ordre d'évaluation n'a aucune importance pour le programmeur, le compilateur peut déterminer l'ordre le plus rapide et réordonnancer le code.
En savoir plus

35 En savoir plus

[PDF] Cours de base pour débuter avec le langage de programmation Haskell | Formation informatique

[PDF] Cours de base pour débuter avec le langage de programmation Haskell | Formation informatique

Isolate side effects In Haskell, function computation cannot have side effects within the program. Most of the side effects in imperative programs are probably the sort of variable reassignment mentioned in the last panel (whether global variables, or local, or dictionaries, lists, or other storage structures), but every I/O event is also a sort of side-effect. I/O changes the world rather than being part of a computation per se. Naturally, there are many times when what you want to do is change the world in some manner (if not, you cannot even know a program has run). Haskell circumscribes all such side effects within a very narrow "box" called Monadic IO . Nothing in a monad can get out, and nothing
En savoir plus

13 En savoir plus

[PDF] cours programmation fonctionnelle en Haskell | Formation informatique

[PDF] cours programmation fonctionnelle en Haskell | Formation informatique

Gabarits Les fonctions nécessitent généralement un traitement qui dépend des valeurs des paramètres effectifs. Au lieu de passer par le biais d'une expression conditionnelle, Haskell, comme tous les autres langages fonctionnels modernes, introduit la notion de gabarit (pattern en anglais) pour simplifier l'écriture de ces fonctions.

80 En savoir plus

[PDF] Cours et exercices de programmation en Haskell | Formation informatique

[PDF] Cours et exercices de programmation en Haskell | Formation informatique

4. Haskell, langage fonctionnel pur. Créé en 1990. Une de ses particularités est d'être un langage à évaluation paresseuse (lazy). Ces langages se distinguent selon certaines caractéristiques : Langages fonctionnels pur vs. impurs. Un langage fonctionnel sans eet de bord est dit langage fonctionnel pur. Par exemple, dans de tels langages il n'y a pas d'opération d'aection. Les langages purs restent assez rares, citons Haskell parmi eux. Lisp, Scheme, la famille des langages ML sont impurs. Typage statique vs. dynamique. Les arguments d'une fonction doivent avoir un type compatible avec celui de la fonction pour que l'évaluation d'une application puisse être réalisée. La vérication du type, ou typage, peut se faire à l'exécution du programme, on parle alors de typage dynamique. C'est le cas de langages comme Lisp ou Scheme. Inversement, le typage peut avoir lieu avant l'exécution du programme, lors de la compilation, le typage est alors qualié de statique. C'est le cas des langages de la famille ML.
En savoir plus

12 En savoir plus

[PDF] Cours pdf de Le langage Haskell enjeux et pratique | Formation informatique

[PDF] Cours pdf de Le langage Haskell enjeux et pratique | Formation informatique

Les caractéristiques d’Haskell Pureté et évaluation paresseuse Conséquence de ces choix.. 3 Les classes de types et les monades.[r]

58 En savoir plus

[PDF] Cours d’introduction à la Programmation fonctionnelle Haskell | Formation informatique

[PDF] Cours d’introduction à la Programmation fonctionnelle Haskell | Formation informatique

Entrées et Sorties Créer nos propres types et classes de types Table des matières Résoudre des problèmes fonctionnellement Nous avons mentionné qu’Haskell était un langage fonctionnel pur. Alors que dans des langages impératifs, on parvient généralement à faire quelque chose en donnant à l’ordinateur une série d’étapes à exécuter, en programmation fonctionnelle on définit plutôt ce que les choses sont. En Haskell, une fonction ne peut pas changer un état, comme par exemple le contenu d’une variable (quand une fonction change un état, on dit qu’elle a des effets de bord). La seule chose qu’une fonction peut faire en Haskell, c’est renvoyer un résultat basé sur les paramètres qu’on lui a donnés. Si une fonction est appelée deux fois avec les mêmes paramètres, elle doit retourner le même résultat. Bien que ça puisse paraître un peu limitant lorsqu’on vient d’un monde impératif, on a vu que c’est en fait plutôt sympa. Dans un langage impératif, vous n’avez aucune garantie qu’une fonction qui est censée calculer des nombres ne va pas brûler votre maison, kidnapper votre chien et rayer votre voiture avec une patate pendant qu’elle calcule ces nombres. Par exemple, quand on a fait un arbre binaire de recherche, on n’a pas inséré un élément dans un arbre en modifiant l’arbre à sa place. Notre fonction pour insérer dans un arbre binaire retournait en fait un nouvel arbre, parce qu’elle ne peut pas modifier l’ancien.
En savoir plus

235 En savoir plus

[PDF] Tutoriel complet sur le langage Haskell | Formation informatique

[PDF] Tutoriel complet sur le langage Haskell | Formation informatique

our program will increase in size. An overview of a lengthy file is a difficult task. Therefore, long projects are divided in parts, containing pieces of a program that belong together. These parts are called modules (not only in Haskell). How to write a module? It is simple, just add a line containing the keyword module, the actual name of the module (capitalized!), followed by the keyword where, and that’s it. Note that this line should be the first line in your Haskell script that is not a comment or empty. An example:

29 En savoir plus

[PDF] Support de formation complet pour apprendre le langage Haskell | Cours informatique

[PDF] Support de formation complet pour apprendre le langage Haskell | Cours informatique

2.8.2 Entrées et sorties 2.8.2.1 Un problème épineux Haskell est un langage purement fonctionnel : cela veut dire qu’une fonction ne peut pas modifier l’environnement extérieur (par exemple, une variable globale), et que sa valeur de retour ne doit dépendre que de ses arguments. Cela a des avantages : il est possible de raisonner beaucoup plus facilement sur un programme, par exemple de supprimer un appel de fonction sans risque si son résultat n’est pas utilisé. Le compilateur peut aussi appliquer certaines optimisations beaucoup plus facilement : par exemple, si une fonction est appelée deux fois avec les mêmes arguments, il peut choisir de ne faire le calcul qu’une seule fois. Cependant, cela pose un problème : comment créer une fonction qui communique avec l’extérieur du programme ? Prenons l’exemple d’une fonction qui sert à lire une ligne entrée au clavier par l’utilisateur du programme : son résultat dépend du moment où elle est appelée, donc son résultat ne dépend pas seulement de ses argu- ments. Pour une fonction qui affiche quelque chose à l’écran, c’est moins compliqué : l’action réalisée ne dépend bien que des arguments. Cependant, cette fonction modifie quand même le monde extérieur, ce qui ne se reflète pas dans sa valeur de retour. Il est aussi impossible d’enlever un appel à cette fonction dont le résultat n’est pas utilisé sans changer le résultat du programme. On pourrait choisir d’ignorer ces problèmes théoriques, et d’utiliser tout de même des fonctions impures, en laissant le soin au compilateur de ne pas y toucher. Cependant, il y a un autre pro- blème : l’évaluation paresseuse fait que les opérations ne sont effectuées qu’au moment où leur résultat est nécessaire. Par exemple, si vous faites un programme qui demande le nom puis le prénom de l’utilisateur, et que vous utilisez le prénom avant le nom, les informations risquent d’être demandées dans le désordre. Pire encore, les opérations dont le résultat ne sert pas, par exemple afficher un texte à l’écran, ne seront pas effectuées.
En savoir plus

105 En savoir plus

[PDF] Tutorial général sur les bases de FileMaker Pro | Formation informatique

[PDF] Tutorial général sur les bases de FileMaker Pro | Formation informatique

Go to File -> Manage -> Database… Click on the Fields tab -> choose the appropriate Table -> add the field name (i.e. “Form Letter,” Type: Text).... Lesson 10: Omitting Rec[r]

29 En savoir plus

[PDF] Tutoriel pour apprendre Haskell en pdf | Formation informatique

[PDF] Tutoriel pour apprendre Haskell en pdf | Formation informatique

Nous avons aussi mentionné qu’elles sont souvent confondues avec les classes de langages comme Java, Python, C++ et autres, ce qui sème la confusion dans l’esprit de beaucoup de gens. Dans ces langages, les classes sont des patrons à partir desquels sont créés des objets qui contiennent un état et peuvent effectuer des actions. Les classes de types sont plutôt comme des interfaces. On ne crée pas de données à partir de classes de types. Plutôt, on crée d’abord notre type de données, puis on se demande pour quoi il peut se faire passer. S’il peut être comparé pour l’égalité, on le rend instance de la classe Eq. S’il peut être ordonné, on le rend instance de la classe Ord. Dans la prochaine section, nous verrons comment créer manuellement nos instances d’une classe de types en implémentant les fonctions définies par cette classe. Pour l’instant, voyons comment Haskell peut magiquement faire de nos types des instances de n’importe laquelle des classes de types suivantes : Eq, Ord, Enum , Bounded, Show et Read. Haskell peut dériver le comportement de nos types dans ces contextes si l’on utilise le mot clé deriving lors de la création du type de données.
En savoir plus

209 En savoir plus

[PDF] Support de formation du langage Haskell pour le développeur C | Cours informatique

[PDF] Support de formation du langage Haskell pour le développeur C | Cours informatique

Merci d’être là diapo 17, 0 : 09 : 54 Par ailleurs, j’ai aussi parlé avec des développeurs expérimentés qui confessaient avoir vainement tenté de se mettre à Haskell. J’ai souffert comme eux, mais je crois avoir compris 1) pourquoi on ne comprend pas ; 2) pourquoi ce n’est

116 En savoir plus

[PDF] Cours de Haskell en pdf | Formation informatique

[PDF] Cours de Haskell en pdf | Formation informatique

Benoît Fraikin Département d’informatique UNIVERSITÉ DE SHERBROOKE 28 juin 2012 1 / 42 UNIVERSITÉ DE SHERBROOKE Plan de la séance 1 Présentation d’Haskell Historique Caractéristiques 2 I[r]

6 En savoir plus

[PDF] Cours Programmation fonctionnelle Haskell pdf | Formation informatique

[PDF] Cours Programmation fonctionnelle Haskell pdf | Formation informatique

Ces strat´ egies d’´ evaluation ont des caract´ eristiques diff´ erentes. La r´ eduction ext´ erieure garantit de constuire une r´ eduction total qui r´ esulte ` a la forme cano- nique de l’expression, si celle-ci existe. En revanche, la r´ eduction int´ erieure ne garantit pas de trouver la repr´ esentation canonique mais quand elle la trouve, elle a parfois besoin de moins d’´ etappes. Haskell utilise la r´ eduction ext´ erieure en combinaison avec une repr´ esentation particuli` ere des expressions qui garantit que chaque sous-expression doubl´ ee n’est ´ evalu´ ee qu’une seule fois. On appelle cette strat´ egie d’´ evaluation l’´ evaluation paresseuse (= lazy evaluation). On uti- lise souvent les mots ´ evaluation, simplification et r´ eduction comme synonymes.
En savoir plus

25 En savoir plus

[PDF] Introduction agréable au langage Haskell en pdf | Formation informatique

[PDF] Introduction agréable au langage Haskell en pdf | Formation informatique

IV-4. Les motifs paresseux (Lazy-patterns) Il existe un autre type de motif autorisé dans Haskell. Il est nommé motif paresseux, et est de la forme ~pat. Les motifs paresseux sont irréfutables : une correspondance de la valeur v avec ~pat est toujours positive, quel que soit pat. D’un point de vue opérationnel, si un identificateur dans pat devait être « utilisé » plus tard dans le terme droit, il sera lié à la portion de la valeur qui résulterait de la correspondance entre pat et v, et autrement. ⊥ Les motifs paresseux sont utiles dans les contextes ou des structures de données infinies sont définies récursivement. Par exemple, les listes infinies sont un excellent vecteur pour écrire des programmes de simulation, et dans ce contexte les listes infinies sont souvent appelées flux. Considérons le cas simple de la simulation d’une interaction entre un processus serveur server et un processus client client, où client envoie une séquence de requêtes au server, et server répond à chaque requête par une réponse. Cette situation est schématisée dans la figure suivante. (Notez que client accepte un message initial en tant qu’argument).
En savoir plus

91 En savoir plus

[PDF] Introduction générale au langage de programmation Haskell [Eng] | Cours informatique

[PDF] Introduction générale au langage de programmation Haskell [Eng] | Cours informatique

other hand, Haskell's Standard Prelude (in Appendix A of the Report and the standard libraries (found in the Library Report [5]) contain lots of useful examples of Haskell code; we encourage a thorough reading once this tutorial is completed. This will not only give the reader a feel for what real Haskell code looks like, but will also familiarize her with Haskell's standard set of prede ned

64 En savoir plus

[PDF] Formation informatique d Eiffel en pdf

[PDF] Formation informatique d Eiffel en pdf

I La notion d’invariant de classe semble aujourd’hui trop rigide pour spécifier des programmes réalistes : il arrive qu’un objet brise l’invariant d’autres objets temporairement, sans me[r]

32 En savoir plus

[PDF] Formation Informatique les Algorithmes en PDF

[PDF] Formation Informatique les Algorithmes en PDF

COURS ALGORITHMIE b. Le rôle privilégié des ordinateurs Si on trouve des algorithmes dans la vie de tous les jours, pourquoi en parle-t-on principalement en informatique ? La raison est très simple : les ordinateurs sont très pratiques pour effectuer des tâches répétitives. Ils sont rapides, efficaces, et ne se lassent pas !! On peut décrire un algorithme permettant de calculer les décimales de la racine carrée de deux, qui soit utilisable par un humain. Vous pourrez ainsi calculer « facilement », à l'aide d'une feuille et d'un crayon, les 10 premières décimales (1,4142135624). Mais s'il vous en faut un million ? Un ordinateur deviendra alors beaucoup plus adapté. De manière générale, on peut concevoir de nombreux algorithmes comme des méthodes de traitement d'information : recherche, comparaison, analyse, classement, extraction, les ordinateurs sont souvent très utiles pour tripoter la masse d'informations qui nous entoure continuellement.
En savoir plus

73 En savoir plus

[PDF] Formation informatique Xhtml en pdf

[PDF] Formation informatique Xhtml en pdf

Passer du HTML au XHTML est relativement facile pour les sites en dynamique, cela peut être plus fastidieux pour des sites en statiques. Ajouter les déclarations de docu[r]

7 En savoir plus

Cours et exercices de Haskell en pdf

Cours et exercices de Haskell en pdf

simpson (\ x -> 4/(1+x*x)) 0 1 20 p 3.14159265 Currification Les fonctions ne sont définies qu'à une seule variable. Par exemple (sauf si on donne explicitement l'unique variable comme un couple), une fonction de deux arguments n'est jamais qu'une fonction à un argument (le premier) dont le résultat est lui-même une fonction à un argument (le second). Ainsi si f est (E*F -> G) alors (Curry f) sera (E -> (F -> G)) et en Haskell comme en Caml, l'écriture f x y z inférera que f est de type (E -> (F -> (G -> H))) et cette expression sera prise pour ((f x) y) z avec (f x) de type F -> (G -> h)) et ((f x) y de type (G -> H). On adopte la convention du parenthèsage à gauche, c'est à dire que f g x signifie (f g) x et est interprété. Ainsi une fonction (a -> b) -> (c -> d) peut s'écrire (a -> b) -> c -> d. Une fonction currifiée reçoit donc ses arguments un à un, mais aussi elles sont appliquables partiellement et plus rapides (des constructions de n-uplets en moins) et privilégiées par la compilation. A première vue la currification est une opération ramenant toutes les fonctions à des compositions de fonctions unaires, si f a été définie comme une fonction à deux arguments. Curry et uncurry sont des fonctions prédéfinies, c'est :
En savoir plus

14 En savoir plus

[PDF] Formation avec Exemple XSLT pas à pas pdf | Formation informatique

[PDF] Formation avec Exemple XSLT pas à pas pdf | Formation informatique

 Dans ce template, on peut utiliser l’élément apply-templates pour. appliquer d’autres modèles[r]

92 En savoir plus

Show all 10000 documents...