Visão Geral
Curso Fast Track to Haskell, um curso direcionado a desenvolvedores com conhecimento em qualquer linguagem de programação, mas com pouco ou nenhum conhecimento de Haskell. O curso abrange todos os conceitos básicos da linguagem Haskell, o sistema de tipos Haskell e as bibliotecas principais. O curso não mostra apenas os recursos da linguagem, mas também enfatiza a filosofia do Haskell e a programação funcional. Ele mostra como os programadores podem usar o sistema de tipos para trabalhar para eles e deixá-lo guiá-los na escrita de seus programas, e demonstra como estruturar sistematicamente o código (com e sem efeitos colaterais) em uma linguagem como Haskell.
Sendo Haskell o principal exemplo de uma linguagem de programação puramente funcional bem projetada, este curso também é excelente para pessoas que geralmente estão interessadas em programação funcional, mas desejam aplicar conceitos de programação funcional em outras linguagens, como por exemplo Scala ou F#.
Conteúdo Programatico
An Overview of Haskell
- A brief overview of all important Haskell concepts
Type-directed Programming
- Pattern matching and function definitions
- Basic datatypes: lists, Bool, tuples, Maybe
- Defining new datatypes
- Haskell syntax
Polymorphism and higher-order functions
- Parametric polymorphism
- Overloading and type classes
- Basic type classes: Eq, Ord, Show, Read
- Numeric types and classes
- Higher-order functions: filter, map, …
- Composing functions
- Abstracting from design patterns: foldr, foldl, …
- The Functor class
- Haskell module system
- Finite maps and sets
Input/Output
- How to model side effects in Haskell
- The IO type
- Composing IO actions
- How to separate IO code from “pure” code
- do notation
- IO-based libraries (random numbers, file IO, …)
- Derived high-level IO functions
Testing (if time permits)
- QuickCheck, a library for testing in Haskell
- Properties as Haskell functions
- Random test-case generation
- How to debug code using QuickCheck
- How QuickCheck works internally
- Advanced ways to define properties
- How to tweak test-case generation
- The HPC (Haskell Program Coverage) tool
Applicative functors and Monads
- Abstracting from common patterns
- How Maybe-based code can be simplified
- How explicit state passing can be modelled
- The Applicative and Monad classes
- More examples
- IO as a monad
- Library functions on applicatives and monads