every type is of a value and kind. we can create kinds so that we can say what we expect the type to have:
kind Arithmetic
T +(x T Arithmetic, y T Arithmetic) {}
T ~(x T Arithmetic) {}
type Vector2<T Arithmetic> = struct {
x T;
y T;
}
notice how Arithmetic replaces Type
every type is of a value and kind. we can create kinds so that we can say what we expect the type to have:
notice how Arithmetic replaces Type