Пакет Domains
Этот небольшой пакет служит для создания доменов – таблиц операций для вычислений. При его загрузке появляется сообщение о переопределениях объектов и список из всего лишь шести функций:
>restart;with(Domains): Domains version 1.0 Initially defined domains are Z and Q the integers and rationale Abbreviations, e.g. DUP for DenseUnivariatePolynomial, also made Warning, the protected names Array, Matrix and Vector have been redefined and unprotected [Array, Matrix, Matrixlnverse, Vector, init, show]
Пакет допускает применение следующих конструкций:
Domains[domain] Domains[evaldomains] Domains[example] Domains[coding]
Приведенный ниже пример поясняет создание и использование доменов Q (для рациональных данных) и Z (для целочисленных данных):
> Q['+'](1/2.2/5.3/8); 51/40 > Z[Gcd](660.130); 10
Следующая операция показывает, что домен Z является таблицей:
> type(Z,table); true
А функция show позволяет вывести полный перечень всех операций, доступных для домена Z:
> show(Z,operations); Signatures for constructor Z' note: operations prefixed by – are not available *: (Integers,Z) › Z *:(Z,Z*) › Z +:(Z,Z*) › Z -: (Z,Z) › Z' -:Z › Z 0:Z 1:Z <:(Z,Z) › Boolean <=: (Z.Z) › Boolean <>: (Z.Z) › Boolean =:(Z.Z) › Boolean >: (Z.Z) › Boolean >-: (Z.Z) › Boolean Abs: Z › Z Characteristic: Integers Coerce: Integers › Z Div: (Z.Z) › Union(Z,.FAIL) EuclideanNorm: Z › Integers Factor: Z › [Z,.[[Z,Integers]*]] Gcd: Z* › Z Gcdex: (Z,Z,Name) › Z Gcdex: (Z,.Z,Name,Name) › Z Input: Expression › Union(Z,.FAIL) Inv: Z › Union(Z,FAIL) Lcm: Z* › Z Max: (Z,Z*) › Z Min: (Z,.Z*) › Z Modp: (Z,.Z) › Z Mods: (Z.Z) › Z ModularHoraomorphlsm: () › (Z › Z.Z)' Normal: Z › Z Output: Z › Expression Powmod: (Z,Integers,Z) › Z Prime: Z › Boolean Quo: (Z,.Z,Name) › Z Quo: (Z,.Z) › Z Random: О › Z RelativelyPrime: (Z,.Z) › Boolean' Rem: (Z,.Z,.Name) › Z Rera: (Z,Z) › Z Sign: Z › UNIONU,.-l,0) SmallerEuclideanNorm: (Z,.Z) › Boolean Sqrfree: Z › [Z,.[[Z,.Integers]*]] Type: Expression › 'Boolean' Unit: Z › Z UnitNormal: Z › [Z,.Z,.Z] Zero: Z › Boolean ^: (Z,Integers) › Z.
Домены позволяют передавать в качестве параметра процедур набор функций в виде единого целою, что и объясняет название этих объектов. Предполагается, что это может привести к заметному сокращению кодов программ вычислений в будущих реализациях системы Maple. Пока же возможности доменов скорее выглядят как очередная экзотика, чем как реальное средство для оптимизации вычислений.
Потребуется время, чтобы показать, что это не так.