background preloader

Real World Haskell

Real World Haskell

Tutorials 1 Introductions to Haskell These are the recommended places to start learning, short of buying a textbook. 1.1 Best places to start Learn You a Haskell for Great Good! (LYAH) Nicely illustrated tutorial showing Haskell concepts while interacting in GHCi. Real World Haskell (RWH) A free online version of the complete book, with numerous reader-submitted comments. Yet Another Haskell Tutorial (YAHT) By Hal Daume III et al. Haskell Wikibook A communal effort by several authors to produce the definitive Haskell textbook. Write Yourself a Scheme in 48 Hours in Haskell A Haskell Tutorial, by Jonathan Tang. How to Learn Haskell Some students at Washington University in St. О Haskell по-человечески About Haskell from a beginner for beginners. 1.2 Other tutorials Haskell for the Evil Genius By Andrew Pennebaker. Parallel Processing with Haskell By Andrew Pennebaker. GetOptFu By Andrew Pennebaker. A Gentle Introduction to Haskell By Paul Hudak, John Peterson, and Joseph H. H-99: Ninety-Nine Haskell Problems

Engineering Large Projects in a Functional Language I had the opportunity to speak at DevNation on July 10th in Portland, and gave the following talk, an updated version of Galois’ collective experiences developing Haskell projects over the past decade. You can download the .pdf. Abstract Galois has been building software systems in Haskell for the past decade. This talk describes some of what we’ve learned about in-the-large, commercial Haskell programming in that time. I’ll look at when and where we use Haskell. We’ll also look at the Haskell toolchain: FFI, HPC, Cabal, compiler, libraries, build systems, etc, and being a commercial entity in a largely open source community. Like this: Like Loading...

untitled Parallel programming in Haskell with explicit futures | GHC Mutterings Recently we released a new version of the parallel package on Hackage, version This synchronises the API to that described in our Haskell Symposium 2010 paper, “Seq no More: Better Strategies for Parallel Haskell“. If you don’t know what strategies are, I recommend the paper: it does have plenty of introductory material, as well as explaining the new improvements we made. In this post I don’t want to focus on strategies, though. What I plan to do in this post is introduce a simpler, more explicit, but less abstract, parallelism API that is implemented in a few lines on top of primitives provided by the parallel package. Let’s start by looking at one of the nice additions in the new strategies API, the Eval monad: data Eval a = Done a instance Monad Eval where return x = Done x Done x >>= k = k x runEval :: Eval a -> a runEval (Done x) = x I’ve included the implementation too, so you can see how simple it is. do x <- m f x you are guaranteed that m happens before f is called.

Apprendre Haskell vous fera le plus grand bien ! - Également disponible en version PDF ! (dernière mise à jour : 12/07/2015 11:00 PST) Et en version plus agréable à imprimer (meilleur contraste, pas de fond noir) N’hésitez pas à m’envoyer vos remarques quant à la traduction ! &#78;&#x2019;&#104;&#xe9;&#x73;&#x69;&#116;&#x65;&#122;&#32;&#112;&#x61;&#x73;&#32;&#224;&#32;&#x6d;&#x2019;&#x65;&#110;&#118;&#x6f;&#x79;&#x65;&#114;&#32;&#118;&#x6f;&#x73;&#32;&#114;&#x65;&#x6d;&#x61;&#114;&#x71;&#x75;&#x65;&#x73;&#32;&#x71;&#x75;&#x61;&#110;&#116;&#32;&#224;&#32;&#108;&#x61;&#32;&#116;&#114;&#x61;&#100;&#x75;&#x63;&#116;&#x69;&#x6f;&#110;&#32;&#x21;&#32;&#40;&#x63;&#x6f;&#110;&#116;&#x61;&#x63;&#116;&#32;&#x61;&#116;&#32;&#104;&#x61;&#x73;&#x6b;&#x65;&#108;&#108;&#32;&#100;&#x6f;&#116;&#32;&#102;&#114;&#x29; Ce travail est une traduction de Learn You a Haskell For Great Good!.

The Resurgence of Parallelism | June 2010 By Peter J. Denning, Jack B. Dennis Communications of the ACM, Vol. 53 No. 6, Pages 30-32 10.1145/1743546.1743560 Comments (2) Multi-core chips are a new paradigm!" "We are entering the age of parallelism!" Back to Top Déjà Vu All Over Again Parallel computation has always been a means to satisfy our never-ending hunger for ever-faster and ever-cheaper computation.4 In the 1960s and 1970s, parallel computation was extensively researched as a means to high-performance computing. Shared Memory Multiprocessing The very first multiprocessor architecture was the Burroughs B5000, designed beginning in 1961 by a team led by Robert Barton. Those machines used shared memory multiprocessors in which a crossbar switch connected groups of four processors and memory boxes. The Burroughs systems were an important influence on research seeking efficient and reliable parallel program structures. Determinate Computation A major result of this research was the "determinacy theorem." Virtual Memory Conclusion

CIS194 Course Description Haskell is a high-level, purely functional programming language with a strong static type system and elegant mathematical underpinnings. It is being increasingly used in industry by organizations such as Facebook, AT&T, and NASA, along with several financial firms. We will explore the joys of functional programming, using Haskell as a vehicle. In the first part of the course, you will learn to use Haskell to easily and conveniently write practical programs. Lecture notes and assignments All homework assignments should emerge creatively from the Style guidelines. Week 1 (Wednesday, 31 August):Haskell Basics: Functions and Pictures Homework 1 (due Tuesday, 6 September).

Haskell to Javascript backend « @UHC My first blog ever, and for a Haskell oriented blog a Javascript flavored topic seemed to be a good start :-). I intend to spend time on my UHC adventures: internals, problems, solutions, open questions, etc etc. As I have been working on a Javascript backend for UHC it thus fits quite well here. I started making a Javascript backend after ICFP 2010. For this entry, I’ll explain the interpreter for which code is generated, and how it interacts with Javascript. Functional programming in Haskell (obviously) is about functions, lazy applications of those functions, and forcing evaluation when we are interested in the actual computed value of applications. The main difference between strict and lazy functional languages is that the delay of a an actual computation must be represented explicitly, usually this is done by remembering the not yet applied function and its arguments (a closure, thunk). The last ingredient is a function eval, necessary to force evaluation of an application:

Hakyll - Home Static sites are fast, secure, easy to deploy, and manageable using version control. Hakyll is a Haskell library for generating static sites, mostly aimed at small-to-medium sites and personal blogs. It is written in a very configurable way and uses an xmonad-like DSL for configuration. Integration with pandoc gives us markdown and TeX support, including syntax highlighting and other goodies. Write your content in whatever format you prefer Create compilation rules in a Haskell EDSL Compile it to HTML and upload it! You can get the latest version from hackage using cabal install hakyll, or using stack by using stack install hakyll. read the tutorials;mail the google discussion group;ask questions on the IRC channel: #hakyll on freenode.

A short introduction to Coq | The Coq Proof Assistant Coq is a proof assistant. It means that it is designed to develop mathematical proofs, and especially to write formal specifications, programs and proofs that programs comply to their specifications. An interesting additional feature of Coq is that it can automatically extract executable programs from specifications, as either Objective Caml or Haskell source code. Properties, programs and proofs are formalized in the same language called the Calculus of Inductive Constructions (CIC). The language of Coq Proving in coq Proof development in Coq is done through a language of tactics that allows a user-guided proof process. fun (n:nat) => _ where _ represents a term that will be constructed after, using other tactics. Here is an example of a proof in the Coq system: Inductive seq : nat -> Set := | niln : seq 0 | consn : forall n : nat, nat -> seq n -> seq (S n). Using the Print command, the user can look at the proof-term generated using the tactics: