proposal: constraints: new package to define standard type parameter constraints (discussion) #47319
Replies: 9 comments 49 replies
|
[Resolved: Decided not to do this, at least not yet. - rsc, July 28 2021] On the issue, I had mentioned that another useful type constraint would be "Arithmetic", which contained any type with |
|
[Resolved: Decided to keep "constraints". - rsc, July 28 2021] I'd prefer the singular form |
|
[Resolved: Will make docs clear and add a vet check. - rsc, July 28 2021] Is adding types in the future going to cause compatibility problems? (This is reposting and merging two of my comments on the issue.) A simple but perhaps too contrived example: type MySigned interface { type int8, int16, int32, int64 }
func MyAbs[T MySigned](v T) T { ... }
func Abs[T constraints.Signed](v T) T { return MyAbs(v) }(Of course presumably A perhaps more likely example (assuming #45346 is accepted): func Abs[T constraints.Float](v T) v {
switch T {
case ~float32:
return math.Float32FromBits(math.Float32Bits(v) &^ (1 << 31))
case ~float64:
return math.Float64FromBits(math.Float64Bits(v) &^ (1 << 63)) // math.Abs
default:
panic("unknown type")
}
}(I'm using syntax proposed in #45380 here for brevity, but since It doesn't seem like this should block the addition of the |
|
I have a question about |
|
Update, July 28 2021 Based on the discussion, we will make the following changes to the proposed API:
I have also added [Resolved] notes at the top of comments that we consider resolved, in addition to replying with text like "Resolved...". @ianlancetaylor is going to update the proposal text. |
|
Given that we are adding |
|
Update, August 4 2021 Based on the discussion, we will make the following changes to the proposed API:
@ianlancetaylor is going to update the proposal text. I am also starting to wonder how long it will take me to learn to type the word constraints. |
|
Presumably, the |
|
I believe most functions accepting channels should restrict the direction of communication. The We could add |
Uh oh!
There was an error while loading. Please reload this page.
We are ready to finish the discussion on #45458, because type sets have been accepted.
Here is the current API:
The intent is that if we add any new predeclared types, such as
int128anduint128, those types will be supported by these constraints as appropriate based on the constraint descriptions.All reactions