Heads up... You're reading this book for free, with parts of this chapter shown beyond this point astext.
Raúl is a co-founder and CTO of 47 Degrees and a member of the Scala Center’s Advisory board. As a functional programming enthusiast and experienced engineer, he is a creator, maintainer, and frequent contributor to many well-known open-source libraries. He frequently speaks at technology conferences around the world and has developed free training assets to help ease the learning curve of a variety of programming languages and their related toolsets.
Connect with Raúl
You’re an influential voice in the industry. You co-founded 47 Degrees, and you’re a contributor to the open-source community as well as several different projects. What are you reading or listening to these days?
I do a fair amount of both. I listen to most of the Functional Programming podcasts. I listen to three or four podcasts a week, and I do a lot of reading online. As I am developing and looking for documentation, I get interested in a topic. Then I go down the rabbit hole. When I see a new book that interests me, I pick it up, especially if it’s about Idris, Haskell, Scala, or coding. I also read a lot of short stories and comics.
What podcasts or books have had a lasting impact on your work?
When I was a kid in Spain, I read a book in Catalan called, L’esquelet de La Balena by David Cirici. It’s about a near-future when teenagers are stranded in the forest and technology helps them survive. As a teen reading this book, I realized there was a lot more out there than my kid’s world. That got me interested in technology and learning more about computers.
How would you explain Functional Programming to a newcomer?
Functional Programming is coding with functions and creating pure functions. Pure functions are those that, given an input, always produce the same output. They are deterministic in their behavior, and they produce no observable effects on the external world. For example, if you insert a record in a database, every time you load the function and insert the record, it’s going to produce an effect in the world. That would be an impure function. If you wrap that same computation into a data type, that function would no longer produce the effect. Instead, it produces a pure value to get a reasonable path around composing these other pure values. Finally, it executes safely when you’re ready. That’s what Functional Programming is about. It’s about programming with pure values that are composable, and they are created out of pure functions that produce no side effects.
- Essentialism: The Disciplined Pursuit of Less | Greg McKeown