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

Introduction à la programmation fonctionnelle avec Haskell

E336d87407083aa8c7266f02465fd1e2?s=47 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

E336d87407083aa8c7266f02465fd1e2?s=128

JM Lacroix

December 02, 2011
Tweet

More Decks by JM Lacroix

Other Decks in Programming

Transcript

  1. Haskell Purement fonctionnel @jmlacroix

  2. "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
  3. Survol • Bases théoriques • Exemples avec Haskell

  4. Programmation fonctionnelle

  5. « 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
  6. Pourquoi l’apprendre? • Voir les problèmes sous un autre angle

    • Sortir de sa zone de confort
  7. Concepts • Fonctions d’ordre supérieur • Pureté • Récursivité •

    Typage fort
  8. • Fonctions en reçoivent et en retournent • Permet l’application

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

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

    n’avoir aucun effet de bord Concepts Pureté: Données immuables
  11. • 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
  12. • 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
  13. • 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
  14. • 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é
  15. • Conversion explicite entre les types • Permet de déduire

    les signatures et de valider automatiquement les fonctions Concepts Typage fort
  16. • 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
  17. Utilisation • Map & Reduce • Erlang (Télécommunications) • OCaml

    (Finances) • Lisp (Emacs) • Haskell (Académique, Xmonad, Darcs) • Autres (Scala / Clojure (Java), F# (.NET))
  18. Haskell

  19. Pourquoi Haskell? • Le plus pur • Concis et élégant

    • Haut niveau • Mémoire gérée • Modulaire • Compilable
  20. Élégance Ruby Haskell

  21. Performance C C++ Java 7 Scala Haskell OCaml Lisp Clojure

    Erlang PHP Ruby 1.9 Python 3 Perl bit.ly/rTMT6U
  22. Démonstration ghci http://gist.github.com/1425499 Notes utilisées pour les exemples

  23. Références http://learnyouahaskell.com/ En ligne: En livre: Gratuit ~30$ http://book.realworldhaskell.org En

    ligne: En livre: Gratuit ~40$
  24. Articles d’intérêt http://www.joelonsoftware.com/items/2006/08/01.html http://www.paulgraham.com/avg.html Beating the Averages Can Your Programming

    Language Do This?
  25. Conclusion Apprenez le langage fonctionnel de votre choix, mais apprenez-en

    un!
  26. Questions?