As a Querki Dev, I can declare and use a typeclass
Summary: Not quite sure what this means yet, but use plus and sum as a good example.
In other words, let's create a Number (or maybe Monoid) type class, which requires plus as a function. Precisely speaking, it requires that a Type have a function plus, which has the signature of taking two values of type A, and returns an A. Then add a sum function, which takes two Numbers / Monoids, and sums them using plus.
Need to define what it means for a function to be defined on a Type. Can we just infer that, keeping track of all the function signatures in existence? Should we think in terms of methods? Do we need something akin to Scala's implicits, in order to be able to extend a type in multiple dimensions, or does Querki's planned notion of being able to mutate an inherited Model in child Spaces suffice?
Ideally, type classes should be duck-typed, with no need to declare that a Type belongs to a typeclass explicitly.