Cool to see this pop up today.
I'm building a new language and just a couple of days ago the concept of guard methods came up as I was trying to tighten up equality semantics to be more like Swift.
Things like Array.contains() only work if the element type implements the Equatable interface, so it would be a guard method. Maybe something like:
class Array<T> {
contains(value: T): boolean where T extends Equatable { ... }
}
Or possibly a constraint on the `this` type, TypeScript style: class Array<T> {
contains(this: Array<T extends Equatable>, value: T): boolean { ... }
}
https://github.com/elematic/zena/blob/8d77f2b36001078f4d5054...