Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction à la programmation fonctionnelle avec Haskell

JM Lacroix
December 02, 2011

Introduction à la programmation fonctionnelle avec Haskell

Survol des différentes caractéristiques des langages fonctionnels accompagné d'exemples simples avec Haskell.

Les exemples sont disponibles ici: https://gist.github.com/1425499

Présentation effectuée dans le cadre du OpenCode 01-12-2011

JM Lacroix

December 02, 2011
Tweet

More Decks by JM Lacroix

Other Decks in Programming

Transcript

  1. "Some may say Ruby is a bad rip-off of Lisp

    or Smalltalk, and I admit that. But it is nicer to ordinary people." - Matz
  2. « style fondamental détaillant la manière dont les solutions aux

    problèmes doivent être formulées dans un langage » Qu’est-ce? Paradigme de programmation En gros, c’est l’évaluation d'expressions plutôt que des séquences d'instructions
  3. • Fonctions en reçoivent et en retournent • Permet l’application

    partielle Concepts Fonctions d’ordre supérieur
  4. • Données immuables • Transparence référentielle • Évaluation paresseuse •

    Effets de bord Concepts Pureté f (x) = x2 fonction entrée sortie
  5. • Les variables ne peuvent pas changer • Permet de

    n’avoir aucun effet de bord Concepts Pureté: Données immuables
  6. • Pour chaque valeur d’argument, la fonction retourne le même

    résultat • Permet d’appeler les fonctions dans un ordre différent Concepts Pureté: Transparence référentielle
  7. • Les valeurs ne sont pas calculées tant qu’elles ne

    sont pas nécessaires • Permet des structures de données infinies Concepts Pureté: Évaluation paresseuse
  8. • Certaines fonctionnalités ayant des effets de bord sont souhaitables

    (I/O) • Permet d’encapsuler et localiser les effets de bord (Monades) Concepts Pureté: Effets de bord
  9. • Fonction définies par rapport à elles mêmes • Permet

    d’écrire une fonction simple qui s’invoque à l’infini jusqu’à ses cas de base Concepts Récursivité
  10. • Conversion explicite entre les types • Permet de déduire

    les signatures et de valider automatiquement les fonctions Concepts Typage fort
  11. • Force une meilleure structure à travers des abstractions et

    composantes • Exprime des idées simplement grâce à des programmes courts et clairs • Programmes plus souples et robustes Avantages
  12. Utilisation • Map & Reduce • Erlang (Télécommunications) • OCaml

    (Finances) • Lisp (Emacs) • Haskell (Académique, Xmonad, Darcs) • Autres (Scala / Clojure (Java), F# (.NET))
  13. Pourquoi Haskell? • Le plus pur • Concis et élégant

    • Haut niveau • Mémoire gérée • Modulaire • Compilable
  14. Performance C C++ Java 7 Scala Haskell OCaml Lisp Clojure

    Erlang PHP Ruby 1.9 Python 3 Perl bit.ly/rTMT6U