Writing about the greenest things
Reasons why I love Claude 💅
Latest Post!
Estimated reading time: 7m 12s
A few years ago I wrote Reasons why my website is offline, in which I put on my tinfoil hat and pulled my whole website into the closet rather than let Copilot anywhere near my code. I was a principled curmudgeon about AI, and honestly? I stand by past me. He had reasons.
Tag Cloud
ai angularjs claude combinators configuration management contexts design patterns drama duct tape functional programming hakyll haskell humor love island parsing perforce programming programming languages reality tv scala self host sinatra tinfoil hat yak shave
Previous posts
Parser Combinators
Estimated reading time: 1h 10m 1s
In my post The Set Function I introduced function combinators as a pattern for building complex logic. I added the caveat that combinators should not be used to define sets, which I feel undersells the value of combinators as a general programming pattern. In this post we will explore combinators as an applied solution to a common problem: parsing text.
Imperative Computation in Functional Programming
Estimated reading time: 1h 25m 15s
Remember functors and applicatives? In my last post Enabling Control Flow in Functional Programming we explored how functors and applicatives abstract over desired and undesired cases of contexts in order to express control flow and permit independent computation. In this post we will explore monads and how to leverage their specific abstraction to express imperative control flow.
The Set Function
Estimated reading time: 15m 31s
What is a Set? A Set can tell you whether or not an value is a member of the Set. This means that a Set is merely a function, specifically of type A => Boolean. In this post I will explore the usage of combinators to build a Set from elementary functions alone.
Enabling Control Flow in Functional Programming
Estimated reading time: 2h 12m 50s
Remember functors? Recall from my last post, Contexts and Effects in Functional Programming, they are structures that abstract away complexity imposed by nondeterminism present in contexts that produce some output; contexts such as optionality, network interaction, or validation. When contexts fail to produce some output, they are in their undesired case and no computation may be performed against them. In this post we will explore how to exploit this characteristic to halt computation in order to express control flow.