Are you interested in using Haskell in a professional setting on a real-world project?
The course will introduce some more advanced concepts (e.g. type-level programming with Servant) but it would focus mostly on the day-to-day aspects of the language, which allow a programmer to become productive sooner.
Everything will be developed with the good practices of software engineering in mind.
Learn how to:
- Work with Haskell in a concrete project
- Handle the basics of Haskell development, solving practical problems
- Create correct and precise data models using types
- Implement database interaction using high level abstractions
- Create a web API described at the type level
- Carefully test the whole application
Available datesDates coming soon
Our team is happy to discuss other options with you.
Contact us at firstname.lastname@example.org and mention ref:
Private tuition and large-group discounts are also available. Find out more here.
Who should take this workshop?
Attendees do not need to have experience with Haskell, but should be professional developers who are already experienced with another programming language.
It will also help if you are:
- possibly willing to use Haskell or FP concepts at work
- interested in why Haskell is a good language for the industry
- interested also in the practicalities
Prior to the workshop, attendees should familiarise themselves with basic Haskell syntax.
This is not mandatory, but you will find the workshop will smoother if you have:
- a bit of software engineering experience
- knowledge of what is required for a production system
- already felt the pains of mutation and side effects management
- some experience in other languages with basic FP concepts such as immutability and higher-order functions
Chapter 1: Basic domain definition and terminal interaction
- Haskell syntax and basic terminology
- the value of types and purity
- IO and side-effects
Chapter 2: Domain refinement and exposing a web API with Servant
- defining a domain model guided by types
- defining a web API specification using types
- how to isolate the domain layer from persistence
- functors and applicatives
Chapter 3: Adding persistence with Postgresql
- describing a database schema in Haskell
- writing composable queries
- monads and monad transformers
Chapter 4: Testing and tooling
- the easiness of writing unit tests
- property based testing
Bonus chapter: Advanced type safety (to solve a concrete modelling problem)
- Existential types