I've been a little obsessed with operator overloading lately. First using |=
in sqlalchemy-builder and then using |
and @
in better-functools.
I didn't actually know that these qualify as DSLs, specifically what's known as "internal DSLs". Funnily enough, I'm usually not a fan of DSLs. A few reasons come to mind:
- DSLs are most often half baked, pretty much every CI-CD pipeline uses a YAML based DSL that's frustrating to work with.
- DSLs lack the IDE support of a proper language.
- DSLs are another thing to learn, internal DSLs are especially annoying as you need to learn the host language too.
But I realise now that DSLs are also an opportunity to introduce something new in a familiar environment. To demonstrate how and why, I've created another cookbook that builds a functional DSL from the ground up.