Why am I passionate about this?
I'm a programmer with a desire to constantly learn and improve. I have many years of experience in writing mission-critical software in highly event-driven areas such as FinTech and online auctions. Through interesting and challenging projects, I've always been fascinated by trying to generalize and abstract what it is that makes good code; so things like design patterns and best practices were just up my street. As I expanded this personal research, I found that functional programming provided many interesting techniques, but that many professionals in the industry were unaware of them. This is why I decided to show these techniques and their benefits to a wider audience through my book Functional Programming in C#.
Enrico's book list on to learn to think like a functional programmer
Why did Enrico love this book?
For many years I did not question the validity of the language I was using, focussing instead on becoming good at getting it to do what was needed. It never occurred to me that, say, the type system could be flawed, causing extra work and allowing unnecessary bugs to seep in.
But what if, instead of writing validation code, you could define your types in a way that makes it impossible to create an invalid instance? What if you could define state transitions in such a way that a state machine cannot transition into an invalid state? These are indeed some of the things the Idris language allows.
In his book Type-Driven Development with Idris, Edwin Brady takes you through both the ideas of type-driven development, and how they're enabled in Iris. Iris looks a lot like Haskell, but better. It even has a unique solution for the complex issue…
1 author picked Type-Driven Development with Idris as one of their favorite books, and they share why you should read it.
DESCRIPTION
Types are often seen as a tool for checking errors, with the
programmer writing a complete program first and using the type
checker to detect errors. And while tests are used to show presence of
errors, they can only find errors that you explicitly test for. In typedriven
development, types become your tools for constructing
programs and, used appropriately, can show the absence of errors. And
you can express precise relationships between data, your assumptions
are explicit and checkable, and you can precisely state and verify
properties. Type-driven development lets users write extensible code,
create simple specifications very early…