Commit 7bc5ad8
Drop the AbstractNamedInteger <: Integer subtyping (#172)
## Summary
Makes `AbstractNamedInteger` a standalone abstract type instead of `<:
Integer`. A named integer is a tagged scalar, not a true integer:
operations like `i1 * i2` fuse names rather than multiply cleanly, mixed
named and unnamed arithmetic has no well-defined meaning, and inherited
`Integer` fallbacks risk silently dropping the name. The type keeps the
explicit integer-like surface it actually needs (equality, hashing, the
arithmetic it supports, ordering, `show`).
This also removes the named-to-plain-number conversion path (the
`Number` constructor and `convert`) that let named and unnamed integers
interoperate. That interoperation is what the standalone design
deliberately drops, and a `convert` that silently discards the name is
exactly the name loss being avoided. The one internal consumer,
resolving `begin` and `end` to a plain index in `to_index`, now reads
the underlying value with `denamed`, which is also how callers should
get the plain integer from a named integer.
The element-type constraints that disambiguate named-range indexing (the
`BlockArrays` `getindex` methods and the plain-`Array` indexing method)
change from `{<:Integer}` to `{<:AbstractNamedInteger}`, since a named
unit range's element type is a named integer, which is not an `Integer`.
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>1 parent fd324eb commit 7bc5ad8
7 files changed
Lines changed: 25 additions & 20 deletions
File tree
- ext/ITensorBaseBlockArraysExt
- src
- test
Lines changed: 9 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
5 | | - | |
6 | | - | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
7 | 12 | | |
8 | 13 | | |
9 | 14 | | |
10 | 15 | | |
11 | | - | |
| 16 | + | |
12 | 17 | | |
13 | 18 | | |
14 | 19 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
626 | 626 | | |
627 | 627 | | |
628 | 628 | | |
629 | | - | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
630 | 632 | | |
631 | 633 | | |
632 | 634 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
4 | 8 | | |
5 | 9 | | |
6 | 10 | | |
| |||
143 | 147 | | |
144 | 148 | | |
145 | 149 | | |
146 | | - | |
147 | | - | |
148 | 150 | | |
149 | 151 | | |
150 | 152 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
86 | 86 | | |
87 | 87 | | |
88 | 88 | | |
89 | | - | |
| 89 | + | |
90 | 90 | | |
91 | 91 | | |
92 | 92 | | |
93 | 93 | | |
94 | 94 | | |
95 | | - | |
| 95 | + | |
96 | 96 | | |
97 | 97 | | |
98 | 98 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
60 | | - | |
| 60 | + | |
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
| |||
137 | 137 | | |
138 | 138 | | |
139 | 139 | | |
140 | | - | |
141 | | - | |
| 140 | + | |
| 141 | + | |
142 | 142 | | |
143 | 143 | | |
144 | 144 | | |
145 | 145 | | |
146 | 146 | | |
147 | 147 | | |
148 | 148 | | |
149 | | - | |
150 | | - | |
| 149 | + | |
| 150 | + | |
151 | 151 | | |
152 | 152 | | |
153 | 153 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | 10 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
104 | 104 | | |
105 | 105 | | |
106 | 106 | | |
107 | | - | |
| 107 | + | |
108 | 108 | | |
109 | 109 | | |
110 | 110 | | |
| |||
0 commit comments