Google's Go programming language was one of the fastest growing languages of 2016 and is poised for explosive growth in the coming years. One of the key features that has helped make Go a success has been it's coherent and simple design that focuses on straightforward, idiomatic approaches to developing software. As the amount of production Go code begins to expand, we may start to find limitations in some existing idioms around how Go code is structured. For developers who want to push the boundaries of quality in our applications, it's vital that we understand how to transform and adopt idioms within our code that favor quality and make defects both apparent and difficult to create.
Many functional programming languages, especially those in the ML language family, have a rich history of facilitating development idioms that enforce safety on the user through programming constructs like phantom types and monadic error handling. In this talk, we'll look at how we can take lessons learned from those functional languages and apply them to our Go applications with the explicit goal of improving application quality by reducing the potential for errors.