• 0 Posts
  • 17 Comments
Joined 3 years ago
cake
Cake day: June 11th, 2023

help-circle





  • I’m not good at this but that’s never stopped me from making a fool of myself before.

    Iterators are monads because they have a flatMap on them. It takes each element and spits out a new iterator which is merged in to the result.

    Option is a monad too. Same reason. You can map the contents to another option. And you won’t get called if there’s nothing inside.

    Promises are monads too. You can map the result to another promise. The wrinkle here is that you don’t get to know when the map happen. Or it might not get called at all if the promise errors out.

    IO can be a monad because you can ask it for input and wait for the result. It’s just the same as a promise.

    See how these different things share a common behavior? That’s monad. Or, maybe it’s monoid. Names are hard and I’m busy making a fool of myself.

    Monads are nothing more than a useful abstraction. Haskell is famous for them because they couldn’t make Haskell do imperative stuff without them so they spread them all over the language.

    We all use them every day in regular programming. We just don’t think of them as a class of thing.



  • There is still fun to be had! Just… Different fun!

    In database land lookup tables are pretty common. Prefix tries and the like are super common in search land. I’ve seen GCD, offset, delta-of-delta, and some funky bitwise floating point compression used. Sometimes just to save dist space. But usually to save working set space or IO or S3 cache space.

    And squeezing the most out of modern CPUs is its own art. Compilers are glorious. And modern CPUs are magic lightning rocks. But you can learn to sing to them just right to make them all happy.