Conversation
That requires making a 1-to-1 relationship between each `Smashable`-adopter and each `Value`-adopter actually I realized that I'm not sure about intent. Updated gist. Seems like Smashable should extend value? Don’t see why Smashable and Value would be related in the type hierarchy. Does that permit Brent’s use case, where it accepts one Value but returns a different one? Right. Value can't be directly Equatable and used as a dynamic type currently. You could put an "isEqual(Value)" method on Value to model heterogeneous equality.