Please log in to watch this conference skillscast.
As a software engineer, you use types to represent the domain data that you are going to work with. The way you design the type architecture for the project also sets the direction on how the product evolves and is maintained through time. This makes thinking in types a crucial and important part of any software development process in any typed language. And even if you're using dynamically typed languages, you still try to structure your data and give it some shape.
Haskell's type system is one of the most powerful and developed at the moment. By using Algebraic Data Types (ADT), you can achieve extensibility, preciseness and flexibility at the same time. It's a powerful technique that greatly improves your development productivity. However, it can be challenging to think about data in terms of types. It requires good skills in designing, working and evaluating different solutions on types.
Focusing only on learning how to write functions without work on designing types could lead to a lack of knowledge on how to build some more complicated systems and completely eliminate the "type-safeness" of the project. That's why I want to talk more about types as I see it as the most important, the most difficult part of learning to engineer your code. And it could help to eliminate the whole layer of errors that could be possible due to the "wrong" type design.
In my talk, I'm going to dive into type systems, explain different aspects of Types, ADTs, Typeclasses and give lots of examples of how you can use types in the most beneficial way for you. I am going to walk you through the process of "making illegal states unrepresentable" and demonstrate how small changes to the type architecture of the product could lead to more precise domain representation and therefore more successful products.
YOU MAY ALSO LIKE:
Not My Type
Veronika Romashkina
Veronika Romashkina is a Functional Programming enthusiast with several years of experience of working with production Haskell in different fields. She is also a very active Haskell Community participant. She co-founded an OSS organisation – Kowainik, where she develops, maintains, and experiments with different libraries and tools; writes guides, tutorials and posts; mentors Haskell beginners and creates free educational materials.