I Am Not a Functional Programmer
Despite rumors to the contrary, I am not actually a functional programmer. True, I sometimes slip and fall and an "applicative functor" would come out from under my breath. But surely you shouldn't…
A blog on software and functional programming
Despite rumors to the contrary, I am not actually a functional programmer. True, I sometimes slip and fall and an "applicative functor" would come out from under my breath. But surely you shouldn't…
The compiler is a powerful tool, yet many developers have a painful relationship with it. Can we do better?
"What's the point of learning functional programming?" was a genuine question I got from a student on a functional programming course I was TAing on.
Use the power of the Nix language to make your Home Manager symlinks pretty.
If you're in the rare intersection of people that use NixOS and custom keyboard layouts, this post is for you. And for those of you who don't use custom layouts, you might learn something useful…
When working with `Future` be explicit about your error handling convention, and make sure your whole team and codebase are aligned to it.
These are strange times we're living in. We have unleashed an army of junior developers on our codebases while changing little else, yet we expect everything to just be okay.
Way back in December, in the spirit of the times (it seems that everyone was either solving Advent of Code or looking for a job), like an elephant in a china shop, I found myself solving a…
Before wrapping anything in `Option`, consider whether you should use a more meaningful domain-specific data type instead.
I've recently stumbled upon a post on Scala Contributors by Kit Langton describing how he managed to create the illusion of adding automatically derived (publicly visible) members to a companion of a…
Beware of leaking `Iterator` instances outside the scope you initialized it in.
Avoid using anonymous functions as class dependencies.
Welcome back to yet another episode of test purification. In the last part we explored another benefit of adding type parameters to our code, the ability to work with very lean mocks. It's been a…
This is not just clickbait, I really do mean that ANY form overloading in programming should be considered evil.
In the last part we saw how to make our code more declarative, and the tests more functional by introducing type parameters for the inner data flowing through our code. In this part we are going to…
In the last part we learned how to purify our tests using type parameters. In this and following parts we'll see some further benefits of adding type parameters this way.
Here's a fun little trick to purify your tests. When I say "purify" I mean it in the pure functional programming sense of making the tests side-effect-free. But more specifically, I'm going to show…
Recently, I've been TA-ing on an introduction to functional programming course, using Haskell. This is a very enlightening experience, as it once again proves the notion that the best way to learn…