Fearless Tinkering is Functional

I started a blog series on functional programming. The current plan is to have five parts:

  1. Fearless Tinkering is Functional :point_left:
  2. Fearless Tinkering with Nix
  3. Fearless Tinkering with Haskell
  4. Fearless Tinkering is Algebraic
  5. Fearless Functional Future

The follow-up on Nix is 99% done, and last part on Unison will incorporate a bunch of ideas from Nix. Lmk what you think :slight_smile:


The blog post is very informative and interesting!

Sadly it went a bit over my head, it’s feels very “academical” (e.g. sentences like “As elaborated in the following section, relegating implementation details to the relevant semantic layer makes declarative APIs naturally terse” are extremely difficult to read for me [as a non-native]!).
That goes a bit against the intend of trying to explain how functional languages should not only be for academics.
I somehow hope that people will pick some of it up and make blog posts, yt videos, talks(!), etc. with a bit easier language :sweat_smile:

I’m very much looking forward to the follow ups nonetheless!


Thanks for reading!

That’s very helpful feedback. I will try to use more plain language going forward. Also, I am happy to answer questions on anything you find confusing.

The bit about “relegating implementation details” is saying that separating low-level concerns/code out from high-level code makes the high-level code short and focused.


Thanks for the post, and thanks for all the elixir links, even though I only skimmed the post for now (I moght give it a more thorough read when I have more time) I enjoyed it.

What I am missing though is a slab on the imperative programs, as there is clearly some shift towards functional paradigms in the imperative languages. Even though modern reactive frontends in JS are implemented quite imperatively, the idea and user facing API is mostly functional. We have libraries like Rambda and Underscore, whiche provide an enhanced functional interface to some standard types. Immutable by default bindings in rust. Etc.

1 Like