-
Notifications
You must be signed in to change notification settings - Fork 2
Finite, Shape и Index
Shape
- класс координат n-мерного ассоциативного массива, которые могут быть разделены на компоненты
Index
- класс границ и индексов n-мерного ассоциативного массива (без пропусков)
Finite
aka. (:&)
- тип универсального n-мерного индекса
Изначально класс Shape
создавался как вспомогательный, т.к. система типов плохо реагировала на рекурсию в ограничениях класса. В sdp-0.3
класс расширился за счёт семества типов Rank
, и его математический смысл стал несколько яснее.
В sdp-0.2
ограничение SubIndex
было Constraint
-синонимом закрытого класса SDP.Index.Sub
. В sdp-0.3
Constraint
-синоним был удалён, SDP.Index.Sub
переименован в SubIndex
, а его функции реэкспортированы с теми не именами независимо от класса.
В sdp-0.2
в модуле SDP.Shape
были добавлены ограничения RANKN sh
(RANK0 sh
.. RANK15 sh
), которые проверяли количество компонент n-мерного индекса sh
путём сравнения его унифицированного представления (GIndex sh)
с типами IN sh
(I2 sh
.. I15 sh
).
В sdp-0.3
на смену RANKN sh
пришли ограничения RankN sh
(Rank0 sh
.. Rank15 sh
), которые определяют количество компонент n-мерного индекса. Хотя оба варианта равнозначны, подход sdp-0.3
кажется более понятным и универсальным.
В sdp-0.3
тип результата функции sizesOf
изменился на SizeOf
. Ранее она возвращала список длины n расстояний между каждой парой 1-мерных компонент n-мерных границ.
Функция | Описание | Добавлен |
---|---|---|
toGBounds | toGIndex для пары границ | sdp-0.2 |
fromGBounds | fromGIndex для пары границ | sdp-0.2 |
rank# | Вариант rank## , возвращающий n# :: Int# для индекса (а не Proxy ) |
sdp-0.3 |
rank | Вариант rank## , возвращающий n :: Int для индекса (а не Proxy ) |
sdp-0.3 |
Тип | Описание | Класс | Добавлен |
---|---|---|---|
GIndex | Тип индекса (:&) , соответствующего данному |
sdp-0.2 | |
DimLast | Тип последнего 1-мерного компонента n-мерной координаты | Shape | sdp-0.2 |
DimInit | Тип (n-1)-мерного компонента n-мерной координаты, из которого исключена последняя 1-мерная компонента | Shape | sdp-0.2 |
Rank | n - число компонент n-мерной координаты | Shape | sdp-0.3 |
Метод | Описание | Добавлен | Удалён |
---|---|---|---|
fromGIndex | Получает индекс из (:&)
|
sdp-0.2 | |
toGIndex | Получает (:&) из индекса |
sdp-0.2 | |
rank | Возвращает n - число компонент n-мерной координаты | sdp-0.2 | sdp-0.3 |
rank## | Возвращает n# - число компонент n-мерной координаты | sdp-0.3 | |
lastDim | Возвращает DimLast от данного индекса |
sdp-0.2 | |
initDim | Возвращает DimInit от данного индекса |
sdp-0.2 | |
consDim | Создаёт n-мерный индекс из 1-мерной и (n - 1)-мерной компонент | sdp-0.2 | |
unconsDim | Разделяет n-мерный индекс на 1-мерную и (n - 1)-мерную компоненты | sdp-0.2 |
Функция | Описание | Добавлен |
---|---|---|
takeDim | Возвращает k-мерную компоненту данного n-мерного индекса, исключая последние (n-k) компонент (0 <= k <= n) | sdp-0.2 |
dropDim | Возвращает (n-k)-мерную компоненту данного n-мерного индекса, исключая первые k компонент (0 <= k <= n) | sdp-0.2 |
joinDim | Создаёт n-мерный индекс из l-мерной и (n - k)-мерной компонент (0 <= k <= n) | sdp-0.2 |
splitDim | Разделяет n-мерный индекс на l-мерную и (n - k)-мерную компоненты (0 <= k <= n) | sdp-0.2 |
offsetIntegral | Определение по умолчанию для offset , если индекс - Integral
|
sdp-0.2 |
defaultBoundsUnsign | Определение по умолчанию для defaultBounds , если индекс - Bounded
|
sdp-0.2 |
Тип | Описание | Добавлен |
---|---|---|
InBounds | Тип результата inBounds
|
sdp-0.2 |
Тип | Описание | Добавлен |
---|---|---|
SizesOf | Размер множества значений в указанных границах - в разрезе компонент, представлен n-мерным вектором | sdp-0.3 |
SubIndex | k-мерная часть n-мерного индекса (0 <= k <= n) | sdp-0.2 |
(:|:) |
Разность двух типов размерности n и m (m <= n) | sdp-0.2 |
Метод | Описание | Добавлен |
---|---|---|
size | Возвращает полный размер структуры с указанными границами | sdp-0.2 |
sizes | Возвращает вектор расстояний между каждой парой 1-мерных компонент в n-мерных границах | sdp-0.2 |
safeElem | Возвращает данный индекс, если он находится в указанных границах, или ближайший граничный | sdp-0.2 |
ordBounds | Возвращает данные границы, если они непустые, или меняет их местами | sdp-0.2 |
defLimit | Возвращает максимальное количество элементов, которые могут поместиться между наименьшей и наибольшей границами, или Nothing , если ограничений нет |
sdp-0.2 |
defaultBounds | Возвращает границы, в которых находится указанное число элементов | sdp-0.2 |
rangeBounds | Возвращает минимальные границы, в которых могут находиться все указанные индексы | sdp-0.2 |
extendBounds | Расширяет границы, чтобы в них попадал указанный индекс | sdp-0.2 |
unsafeIndex | Преобразует число в n-ый индекс в границах defaultBounds n
|
sdp-0.2 |
unsafeIndex' |
unsafeIndex для Integer
|
sdp-0.3 |
isEmpty | Проверяет, что в указанных границах нет ни одного элемента | sdp-0.2 |
inBounds | Аналогична последовательной проверке на isEmpty , isUnderflow и isOverflow
|
sdp-0.2 |
isOverflow | Проверяет, что элемент выходит за верхнюю границу | sdp-0.2 |
isUnderflow | Проверяет, что элемент выходит за нижнюю границу | sdp-0.2 |
inRange | Проверяет, что элемент выходит за нижнюю границу | sdp-0.2 |
prev | Возвращает предыдущий индекс по порядку в указанных границах или нижнюю границу | sdp-0.2 |
next | Возвращает следующий индекс по порядку в указанных границах или верхнюю границу | sdp-0.2 |
offset | Определяет порядковый номер индекса в указанных границах | sdp-0.2 |
index | Определяет индекс по порядковому номеру в указанных границах | sdp-0.2 |
range | Возвращает все индексы в указанных границах | sdp-0.2 |
subshape | Проверяет, что обе n-мерные границы начинаются с указанного k-мерного компонента и их можно усечь до (n-k)-мерных (0 <= k <= n) | sdp-0.2 |
slice | Разбивает n-мерные границы на k-мерные, включающие указанных индекс, и (n-k)-мерные (0 <= k <= n) | sdp-0.2 |