Ruby is late to the type system party. Let’s give Ruby something smart to say when it gets there. You’ll take a journey with Haskell’s type system. Along the way, you’ll learn how types can let you forget about nil, declaratively model your domain, and allow your compiler to drive your design. How can ANYONE be productive in a language without if/else, while, or even classes? Let me show you! Haskell is proof that sometimes constraints can be liberating. There are murmurs that a type system will be coming to Ruby. Before that happens, you should get informed about what is hot in the current type system market. Haskell is known for it’s type system, but instead of describing it with dense language, let’s take a journey through code examples. Throughout our trip, we will avoid scary buzzwords like “monad” and “algebraic data type” because, honestly, what good is a formal definition when you don’t understand the power behind the concept. We will compare solutions in Ruby to solutions in Haskell, and each stop on our trip will introduce a new mind blowing paradigm brought to you by Haskell’s type system. You will learn about type systems through a non-threatening story, and you’ll understand the value a type system can bring to your code. Key stops on our route will be “forget about nil”, “declaratively model your domain”, and “allow your compiler to drive your design”.