We should add type annotations in places where there is a clear type. There are a few places where it's less obvious how to add types; in particular, groups are used to indicate that a certain functions are expected to be implemented. For example, anything in the Heatable group is expected to implement the heat function, and any code that wants to heat something will first check that the object is in the Heatable group, then call heat on it. This is problematic because there's not really any way to enforce that those functions exist. Any solution to this is non-trivial, so we will have to figure that out separately.
We should add type annotations in places where there is a clear type. There are a few places where it's less obvious how to add types; in particular, groups are used to indicate that a certain functions are expected to be implemented. For example, anything in the
Heatable
group is expected to implement theheat
function, and any code that wants to heat something will first check that the object is in theHeatable
group, then callheat
on it. This is problematic because there's not really any way to enforce that those functions exist. Any solution to this is non-trivial, so we will have to figure that out separately.