text: Are you interested in a highly intensive, highly practical two day Haskell course? Join this workshop to learn Haskell's excellent capabilities for abstraction and how you can use Haskell to quickly develop correct programs that are close to a given specification.
  
  At the centre of the Haskell language is its type system: types that do not get in the way because they can be inferred; types that can be polymorphic and overloaded in various ways; types that explicitly tag functions with side-effects. Learn how these features make Haskell unique, even among functional languages, and learn all about functional language concepts, by understanding Haskell's uncompromising approach.
  
  While we will touch on the theoretical foundations of the language, the focus of this Haskell course is most definitely practice: You will learn how to best use the Haskell toolchain, about important best practices in program development, and you will gain a true understanding on how to best harness and utilise Haskell's power!
  
  Upon completion of this Haskell course, you will be able to design robust functional programs in a principled and systematic way - the kind of things that are difficult to pick up from reading a book.
  
  About the Author
  
  Andres Löh is a long-time functional programming enthusiast. He has started using Haskell in 1997 while being an undergraduate studying mathematics.
  He obtained his PhD on datatype-generic programming using Haskell from Utrecht University in 2004. Since then, he has continued to use Haskell in research and practice, including teaching various courses both to students and participants from industry.
  His main interests, next to datatype-generic programming, are embedded domain-specific languages, unleashing the full power of Haskell's type system, parallelism and applying functional languages to real-life problems. Since 2010, Andres is an independent Haskell consultant and partner at Well-Typed LLP.
  
  Thanks to our partners
  
  Quick Tour of Haskell
  
  An overview of the most important language concepts of Haskell
  
  Type-Directed Program Development
  
  Defining functions systematically
  
  Pattern matching
  
  An introduction to lists, tuples, and Maybe
  
  Polymorphism and overloading
  
  Polymorphic functions and code reuse
  
  The power of parametricity
  
  Understanding type classes
  
  IO
  
  Why effects should be explicit in the types
  
  Composing IO actions
  
  Structuring interactive programs
  
  Testing
  
  An introduction to QuickCheck and SmallCheck
  
  Patterns for effects
  
  Abstracting from common programming patterns
  
  The Maybe, list and state monads
  
  The monad interface
  
  Audience
  
  If you are a developer who wants to learn about functional programming, and Haskell specifically, but you have little or no experience with any functional language - then this course is for you! This course would also suit those wishing a refresher on Functional Programming and Haskell.
  
  Prerequisites
  
  Some familiarity with programming in general is helpful, but no experience in functional programming
  languages or Haskell is expected
  
  Bring your own hardware
  
  You are requested to bring your own laptop for this course, with the Haskell Platform installed - to learn how to develop within your own environment.
  
  If you are unable to bring a laptop for this course, please contact our community team on +44 207 183 9040 or email us.