
Runtime Arguments
Conversations about technology between two friends who disagree on plenty, and agree on plenty more.
Runtime Arguments
Episode 4: Functional Programming - You're probably already doing it
•
Jim McQuillan & Wolf
Show notes and things to think about:
- Functional programing isn't academic. It isn't overwhelming. It isn't impossible to use. It isn't inapplicable to ordinary problems like the ones you're solving right now.
- You can use functional techniques in almost any modern programming language. In fact, you probably already are.
- Main pillars of FP:
- Pure functions (no side-effects)
- Functions are first-class objects (you can pass them as arguments, you can return them as results, you can store them in lists or any other data-structure)
- Data is immutable by default
- FP languages often provide powerful pattern matching syntax (didn't mention this much in the episode other than briefly noting Python's new match statement)
- A couple of things not mentioned: in FP, your code is more about what you want, not about how to get it. That stack of functions for the sales data example looks declarative, not imperative.
- A couple of other things not mentioned: recursion and lazy evaluation. Not exclusive to FP, but very often available in functional languages.
- Papers and explanations about monads might be unreadable, but you're already using them and you already know how they work.
- Using FP techniques appropriately can make your code easier to test, harder to break, and possibly even prettier to look at.
- There are places in your code right now that you can make better right now with FP. Do it!
Links:
- We mentioned a ton of languages. Most of them have easy to find home pages so I'm not going to list out all the links; but there are a couple of obscure ones
- There's nothing for the original Lisp, the closest these days is probably https://common-lisp.net.
- ML can be found at https://sml-family.org but the more modern and popular variant, OCaml, can be found at http://ocaml.org. Microsoft's take on this is F#, open-sourced at https://fsharp.org.
Hosts:
Jim McQuillan can be reached at jam@RuntimeArguments.fm
Wolf can be reached at wolf@RuntimeArguments.fm
Follow us on Mastodon: @RuntimeArguments@hachyderm.io
If you have feedback for us, please send it to feedback@RuntimeArguments.fm
Theme music:
Dawn by nuer self, from the album Digital Sky