Этот небольшой пакет служит для создания доменов — таблиц операций для вычислений. При его загрузке появляется сообщение о переопределениях объектов и список из всего лишь шести функций:
>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] Doma1ns[evaldomains]
Domains[example] Domains[coding]
Приведенный ниже пример поясняет создание и использование доменов Q (для рациональных
данных) и Z (для целочисленных данных):
> Q['+'](l/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