Learning Haskell is a free Haskell tutorial that integrates text and screencasts to combine in-depth explanations with the hands-on experience of live coding. It is aimed at people who are new to Haskell and functional programming. Learning Haskell does not assume previous programming expertise, but it is structured such that an experienced programmer who is new to functional programming will also find it engaging. Learning Haskell uses graphics programming to create an engaging experience.
Hackage is the Haskell community's central package archive of open source software. Package authors use it to publish their libraries and programs while other Haskell programmers use tools like cabal-install to download and install packages (or people get the packages via their distro).
Hoogle is a Haskell API search engine, which allows you to search many standard Haskell libraries by either function name, or by approximate type signature.
This is Learn You a Haskell, the funkiest way to learn Haskell, which is the best functional programming language around. You may have heard of it. This guide is meant for people who have programmed already, but have yet to try functional programming.
Most Haskell tutorials on the web use a style of teaching akin to language reference manuals. They show you the syntax of the language, a few language constructs, then tell you to create a few simple functions at the interactive prompt. The "hard stuff" of how to write a functioning, useful program is left to the end, or omitted entirely. This tutorial takes a different approach.
This site will show how to write the concurrency section of A Tour of Go in Haskell. A Tour of Go is a famous tutorial of Go. Haskell has concurrency features similar to Go: lightweight thread, channel, etc.. So it should be interesting to compare equivalent concurrent programs in Haskell and Go.
We would like to use the Coq proof assistant to mechanically verify properties of Haskell programs. To that end,we present a tool, named hs-to-coq, that translates total Haskell programs into Coq programs via a shallow embedding.
When I recently asked a roomful of developers, if there’s anyone who had learned a new language this year, only very few hands went up. A year ago today, that would have been me in the audience, keeping my hands down. … And it was like this, until Haskell ruined it for me!
Haskell has a rich library ecosystem and is well-suited for these tasks but I concede that there might be a systemic lack of introductory material for many domain specific tasks. Something that many projects and companies are trying to remedy.
Screencast of a talk given by Simon Meier at the HaskellerZ Meetup in Zürich on 28 Aug 2014. The blaze-react library uses Facebook's ReactJS library to do ...
A double pack: - Jasper talks about Getting things done in Haskell (adapted from his 2017 Haskell eXchange talk ) - Simon and Jasper talk about organizing th...
A full stack, reactive architecture for general purpose programming. Algebraic and monadically composable primitives for concurrency, parallelism, event handling, transactions, multithreading, Web, and distributed computing with complete de-inversion of control (No callbacks, no blocking, pure state)
Reflex FRP is a composable, cross-platform functional reactive programming framework for Haskell. It allows you to build interactive components in pure functional style, working in harmony with established Haskell techniques and improving the quality and elegance of your applications.
Reflex FRP is a composable, cross-platform functional reactive programming framework for Haskell. It allows you to build interactive components in pure functional style, working in harmony with established Haskell techniques and improving the quality and elegance of your applications.
The 2018 Haskell User Survey shows very high satisfaction with Haskell’s security, quality, reliability, maintainability, and advanced capabilities, writes FP Complete’s CEO Aaron Contorer. InfoQ has taken the chance to speak with him about Haskell’s current and future landscape.
I sat in a coffee shop reflecting on my journey in Haskell today. It was spurred on by briefly seeing the whole “monads are pipes” thing and some responses to it. I don’t involve myself in these…
This guide will use JavaScript instead of a pure functional programming language (e.g. Haskell) to make things more approachable for developers accustomed to imperative languages. It will, however, assume you have basic knowledge of functional programming, including currying and lambdas.
I’ve written this article series, to help you get a good sense of how production Haskell is written at a company like Klarna and what to avoid along the road.
Historically, I’ve struggled to find a concise, simple way to explain what it means to practice type-driven design. Too often, when someone asks me “How did you come up with this approach?” I find I can’t give them a satisfying answer. ...
Learn more about how the Rust programming language shares many of the advantages offered by Haskell such as a strong type system, great tooling, polymorphism, immutability, concurrency, and great software testing methodologies. Rust is a good choice when you need to squeeze in extra performance.
For me, this month marks the end of an era in my life: as of February 2018, I am no longer employed writing Haskell. It’s been a fascinating two years, and while I am excitedly looking forward to what I’ll be doing next, it’s likely I will continue to wri...
My Functional Programming journey was filled with dead ends, false starts, failed attempts and frustration. And I suspect that I’m not alone in this struggle. So why is this a common problem…
N. Danielsson, J. Hughes, P. Jansson, and J. Gibbons. Conference Record of the 33rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, volume 41 of POPL '06, page 206--217. New York, NY, USA, ACM, (January 2006)
K. Stengel, F. Schmaus, and R. Kapitza. Proceedings of the 12th International Workshop on Adaptive and Reflective Middleware, New York, NY, USA, Association for Computing Machinery, (2013)