background preloader

The Haskell Cheatsheet

The Haskell Cheatsheet

Haskell « A Critical Systems Blog Looking to make a statement this holiday season? You could try to win the office “ugly holiday sweater” contest. Or, you could play “Jingle Bells” on your Arduino microcontroller, using Haskell. This post is about the latter. We’re going to write this small program using the Copilot embedded domain-specific language (on Hackage and the source on Github). (For the impatient, the Haskell file is here, and the generated .c and .h files are here and here, respectively.) We’re going to essentially recreate this C/Wiring program, plus flash some LEDs, but hopefully in a easier, safer way. Determine the note and number of beats to play.Play the piezo speaker.Flash the LEDs. We’ll start by defining which pins control what function: -- pin numbers speaker, red, green :: Spec Int32 speaker = 13 red = 12 green = 11 The type Spec Int32 takes an Int32 and lifts it into a Copilot expression. We’ll call the program cycleSong. Now for the actual program: And that’s basically it. x = [0] ++ map (+1) x

Haskell comme un vrai! tlpl: Un tutoriel très court mais très dense pour apprendre Haskell. Merci à Oleg Taykalo vous pouvez trouver une traduction Russe ici: Partie 1 & Partie 2 ; Table of Content Je pense vraiment que tous les développeurs devraient apprendre Haskell. Peut-être pas devenir des ninjas d’Haskell, mais au moins savoir ce que ce langage a de particulier. Son apprentissage ouvre énormément l’esprit. La plupart des langages partagent les mêmes fondamentaux : les variablesles bouclesles pointeursles structures de données, les objets et les classes Haskell est très différent. Plier son esprit à Haskell peut être difficile. Cet article sera certainement difficile à suivre. La manière conventionnelle d’apprendre Haskell est de lire deux livres. Cet article fait un résumé très dense et rapide des aspect majeurs d’Haskell. Pour les francophones ; je suis désolé. Cet article contient cinq parties : 01_basic/10_Introduction/00_hello_world.lhs Introduction Install Tools: Don’t be afraid ~ runhaskell . Functional In C:

Apprendre Haskell vous fera le plus grand bien ! - Christian Fauré » Blog Archive » Apprendre Haskell Haskell est un langage de programmation fonctionnelle. Un style de programmation où l’on utilise des fonctions plutôt que des objets, contrairement au paradigme de la programmation orientée objet. Je ne vais pas refaire ici la liste des caractéristiques de la programmation fonctionnelle et de Haskell en particulier. Le souhaite juste indiquer rapidement quels sont les enjeux et quelles sont les ressources que l’on peut utiliser pour s’y initier. Pourquoi Haskell ? L’évaluation paresseuse (lazy evaluation) permet d’optimiser les performances du code car les calculs ne sont faits par le programme que s’ils sont vraiment nécessaires. Ensuite, le système de typage des données est statique, c’est à dire qu’il faut bien préciser la nature des données manipulées par les fonction quand on les défini. (on peut trouver sur le web plusieurs enregistrements vidéos de conférences données par Simon Peyton-Jones, toutes relèvent du gai savoir çà vaut le détour.)

The Marvels of Monads - Yet Another Language Geek If the word "continuation" causes eyes to glaze over, then the word "monad" induces mental paralysis. Perhaps, this is why some have begun inventing more benign names for monads. These days, monads are the celebrities of programming language theory. Like continuations, monads are simpler than they sound and are very useful in many situations. With all of the attention that monads get, why am I writing yet another explanation of monads? Introducing Monads Monads come from category theory. Monads enjoy tremendous success in Haskell, but like an actor who does well in a particular role, monads are now stereotyped in the minds of most programmers as useful only in pure lazy functional languages. Controlling Complexity Composition is the key to controlling complexity in software. In our study of program design, we have seen that expert programmers control the complexity of their designs with the same general techniques used by designers of all complex systems. 1. Often, values are not enough.

Related: