Visão Geral
Fundamentos do Haskell este curso de treinamento é uma visão geral dos conceitos básicos de Haskell para iniciantes.
Curso Haskell Foundation, Haskell é uma poderosa linguagem de programação funcional para construir sistemas sólidos e projetos ambiciosos. Este curso foi projetado para cobrir os fundamentos da linguagem e fornecer aos iniciantes conhecimento suficiente de seus recursos para serem bem-sucedidos no desenvolvimento de projetos em Haskell.
Objetivo
Após realizar este Curso Haskell Foundation, você será capaz de:
- Definições simples
- Definições usando correspondência de padrões e guardas
- Ligações locais com letewhere
- Correspondência de padrões em listas, recursão
- Funções de ordem superior: mapas e dobras
- Funções anônimas e aplicação parcial
Pre-Requisitos
- Um ano de experiência com qualquer linguagem de programação orientada a objetos ou funcional.
Materiais
Inglês + Exercícios + Lab Pratico
Conteúdo Programatico
Simple Constructs
- Simple definitions
- Definitions using pattern matching and guards
- Local bindings with let and where
- Pattern matching over lists, recursion
- Higher-order functions: maps and folds
- Anonymous functions and partial application
Algebraic data types and type classes
- Record types, and record syntax
- Enumerations
- General shape of algebraic data types
- Differences from OOP modeling
- Polymorphic types: lists, trees
- First-order type classes: Eq, Ord, Show
- Automatic derivation
Input/output
- Concept of purity and tagging with IO
- do blocks: pure vs. impure values
- Basic console and file input/output
- Working with callbacks (example using network-simple)
- Small introduction to streaming
Functional error handling
- Maybe and Either as polymorphic types
- Combinators to work on the happy path
- Dealing with errors in IO: exceptions
Higher-kinded type classes: Functor and Monad
- Looking at commonalities in maps -> Functor
- Notion of type constructors and higher-kinded classes
- Simulating stateful computations in Haskell
- Looking at commonalities in bind -> Monad
- Monadic utilities
Higher-kinded type classes: Applicative and Traversable
- Applicative as generalizing map to n-ary functions
- Applicative style programming
- Generalizing map to mapM to traverse
Laziness
- Execution model with thunks
- Cyclic and infinite structures
- Forcing execution to avoid leaks
- IO, exceptions and laziness
Async, STM, streaming, resources
- Spawning new computations with async
- Concurrent execution, racing
- Concurrent access with Software Transactional Memory
- Managing single resources
- Managing pools of resources
Combining Effects
- Logging effects
- Monadic classes and stacks
- An algorithm with environment, state and logging
- Integrating with IO effect
TENHO INTERESSE