The preceding chapter has a companion .shc contract. Its bodyless behavior declarations expose stable identities while their implementations remain in the .shp file. A dependent module can use those identities in ordinary types without reading or comparing implementation bodies.
Contracted Witness
let taskstasks: Vector(Book.LanguageReference.BehaviorModules.Task) = [BehaviorModules.Task { title = "ship""ship": String; priority = 11: Int; }];
let rankedranked: Book.LanguageReference.BehaviorModules.RankedTasks(Book.LanguageReference.BehaviorModules.ByTitle): BehaviorModules.RankedTasks(BehaviorModules.ByTitle) = BehaviorModules.RankedTasks {
tasks = taskstasks: Vector(Book.LanguageReference.BehaviorModules.Task);
};
✓rankedranked: Book.LanguageReference.BehaviorModules.RankedTasks(Book.LanguageReference.BehaviorModules.ByTitle): BehaviorModules.RankedTasks(BehaviorModules.ByTitle);
expect ✓Vector.lengthlength: pure fn!('a)(items: Vector(Book.LanguageReference.BehaviorModules.Task)) -> Int(rankedranked: Book.LanguageReference.BehaviorModules.RankedTasks(Book.LanguageReference.BehaviorModules.ByTitle).taskstasks: Vector(Book.LanguageReference.BehaviorModules.Task)) == 11: Int;