Created by: natefaubion
This PR refines the experimental macroclass
feature we released with 0.6.0. The syntax has changed slightly, and auxillary bindings are a bit more robust.
You declare pattern
s like before, but instead of being rules themselves, pattern
s contain a rule
declaration along with any auxillary with
bindings. I renamed where
to with
to mirror withSyntax
. with
bindings support syntax quotes with #{}
but can also use syntax constructors like makeValue
et al. Additionally, pattern
s with only a rule
declaration can be collapsed into a single rule
to mirror identity rules.
Here is an example implementation of clojure-like protocols using macroclass
es: https://gist.github.com/natefaubion/bd7addb60a888c1ec759