How do I create multiple implementations of a multimethod for a single data type?
This may not be a great example, but I hope it illustrates the idea: be able to treat nested vectors both as sequences:
repl> (def thing [[[1] []] [27] [18 [32 35]]])
repl> (fmap count thing)
[2 1 2]
and as trees:
repl> (fmap (partial + 1) thing)
[[[2] []] [28] [19 [33 36]]]
What is the general way to create and use multiple multimethod implementations for the same type?