48 votes

Programmation Haskell dans le monde réel

Étant un développeur impératif depuis quelques années, je n'avais jamais eu l'envie d'apprendre la programmation fonctionnelle.

Il y a quelques mois, j'ai enfin décidé d'apprendre Haskell. C'est un langage assez cool, mais je suis perplexe quant à la façon dont une application réelle pilotée par événements pourrait être programmée dans un tel langage. Connaissez-vous un bon tutoriel à ce sujet ?

Note : Quand je dis "vraie application", je ne parle pas d'une application réelle, prête à être produite. Je veux juste dire un petit échantillon d'application, juste pour en avoir une idée. Je pense que quelque chose comme une version simplifiée du caculateur Windows serait parfait, et ensuite peut-être quelque chose d'un peu plus complexe.

89voto

Jörg W Mittag Points 153275

Quand vous parlez d'exemples du "monde réel", vous pensez probablement à des problèmes qui sont intrinsèquement séquentiels, avec des états ou qui font beaucoup d'entrées/sorties, n'est-ce pas ?

Alors, qu'en est-il des jeux ?

Ou, que diriez-vous d'un Gestionnaire de fenêtres X un système extensible Editeur de texte clone d'Emacs ou un IDE ?

Ensuite, il y a le livre, dont le titre contient déjà votre question : Haskell dans le monde réel et qui est aussi disponible gratuitement !

Une autre chose que vous pourriez regarder, c'est Programmation fonctionnelle réactive . (Il est utilisé dans Frag, par exemple.) Ce qui est intéressant avec FRP, c'est qu'il vous permet d'aborder le problème de la programmation des interfaces graphiques, par exemple, sous un angle très différent. Si vous lisez le chapitre sur les interfaces graphiques dans le livre RWH, vous verrez qu'il explique comment vous pouvez écrire une application graphique comme en C, mais mieux. FRP, quant à lui, vous permet d'écrire une application en totalement différent d'une manière qui ne serait même pas possible en C.

Souvent (je ne dis pas que c'est le cas dans votre question, mais c'est un schéma récurrent), lorsque quelqu'un dit "mais Haskell peut-il être utilisé dans le monde réel ? vraiment disent "Je sais comment faire ceci en C, et en Haskell je ne peux pas le faire exactement de la même manière, donc cela doit être impossible en Haskell, donc Haskell n'est pas prêt pour le monde réel". Mais ce qu'ils ne comprennent pas, c'est qu'il pourrait y avoir une façon totalement différente et plus efficace de faire les choses. beaucoup mieux manière de résoudre le problème. (C'est comme dire "Erlang n'a pas de threads, donc il ne peut pas être utilisé pour implémenter des systèmes concurrents"). Et FRP n'est qu'un exemple.

8voto

Joachim Breitner Points 9238

Pour un conférence éclair Aujourd'hui, j'ai rassemblé cette liste d'applications Haskell de démonstration, en excluant délibérément tout ce qui ne s'adresse qu'aux programmeurs :

  • darcs (depuis 2002, 35 000 loc.) : Distribué système de contrôle de version distribué avec un accent novateur sur les changements au lieu de sur les états.
  • xmonad (depuis 2007, 30000 loc) : Bien connu connu avec une énorme bibliothèque de plugins de mise en page et autres. plugins. Il a été placé dans la liste malgré le fait que son fichier de configuration soit un fichier Haskell.
  • hledger (depuis 2007, 9000 loc) : Fichier texte outil de comptabilité à double registre basé sur des fichiers texte, un clone de Grand livre .
  • Raincat (depuis 2008, 2000 loc) : Jeu de plateforme avec un chat qui ne veut pas se mouiller.
  • arbtt (depuis 2009, 2000 loc) : Mon suivi automatique du temps basé sur des règles. Fait dans la liste comme un plug sans vergogne ; probablement pas si populaire. Il a maintenant une page web appropriée contribuée par Waldir Pimenta.
  • détexifier (depuis 2010, 500 loc) : Le site back end du très utile chercheur de commandes de caractères LaTeX est écrit en Haskell.
  • git-annex (depuis 2010, 28 000 loc) : Gère vos fichiers et leur emplacement, un mélange de dropbox et git. Ecrit par le célèbre Joey Hess, qui en a fait son métier via kickstarter Il dirige actuellement un deuxième série de financement !
  • Nikki et les Robots (depuis 2010, 18 000 loc) : Jeu de plateforme avec Nikki et, bien, ses robots. Il a été produit comme un jeu commercial indépendant et vendu via un système de via un système de paiement à la carte, mais la société a malheureusement fermé ses portes.
  • hoodle (depuis 2011, 13 000 loc.) : A logiciel de prise de notes et d'annotation de PDF comme xournal .
  • Chordify (depuis 2012, ? loc) : Analyses de la musique, par exemple à partir d'une vidéo YouTube, et calcule les accords de accords de guitare correspondants. Logiciel fermé, mais censé être écrit en Haskell.

(Aussi en vedette sur mon blog et sur le diapositives de la conférence avec de belles photos représentatives de chaque programme).

7voto

Don Stewart Points 94361

xmonad est piloté par les événements (littéralement). Il possède une boucle d'écoute qui se réveille lors d'événements, modifiant un état interne modélisant le serveur X, qui est ensuite rendu à l'écran.

http://xmonad.org

6voto

Mercer Traieste Points 2935

J'ai trouvé une fois ce bot irc écrit en haskell :

http://www.haskell.org/haskellwiki/Roll_your_own_IRC_bot

6voto

Kip9000 Points 4462

Voici quelques liens comme vous l'avez demandé.

Celui-ci explique beaucoup de choses qui n'ont pas de sens pour un programmeur impératif à propos de Haskell.

Tutoriel Haskell pour les programmeurs C

Celui-ci est un très bon tutoriel facile à suivre.

Apprendre un Haskell pour le bien de tous

Raytracer écrit en Haskell

Raytracer Haskell

Vous pouvez télécharger le compilateur Glasgow Haskell à partir d'ici. GHC

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X