Средства создания пакетов расширений
Для создания пакетов расширений в общем случае используются следующие средства системы:
- Begin ["context'"] – устанавливает текущий контекст;
- BeginPackage ["context'"] – делает context единственным активным контекстом. Возможна также форма BeginPackage [ "context" ", { "needl' ", "need2'",…}];
- Return [ ] – возвращает Null;
- End [ ] – возвращает текущий контекст и переходит к предыдущему;
- EndAdd [ ] – возвращает текущий контекст и переходит к предыдущему, предварительно добавляя текущий контекст к списку контекстов $Context-Path;
- EndPackage [ ] – восстанавливает $Context и $ContextPath в их значениях до предшествующего BeginPackage и добавляет текущий контекст к списку $ContextPath;
- Exit [ ] – завершает сеанс работы Mathematica;
- Goto [tag] – просматривает текущее составное выражение в поиске Label [tag] и передает управление в эту точку;
- Interrupt [ ] – производит прерывание в теле вычислений;
- Label [tag] – представляет точку в составном выражении, в которую управление передается директивой Goto;
- Quit [ ] – завершает сеанс работы Mathematica.
Приведем пример простого фрагмента программы, дающего определение новой функции ExpandBoth с помощью некоторых из представленных средств:
(
*
:Title: ExpandBoth
*
)
(
*
:Context: ProgramminglnMathematica
'ExpandBoth'
*
)
(
*
: Author: Roman E. Maeder
*
)
ExpandBoth:: usage
=
"ExpandBoth [e] expands all numerators and denominators in e."
Begin [
"' Private1"
]
ExpandBoth [x_Plus]:
=
ExpandBoth
/
@ x
ExpandBoth [x_]:
=
Expand [ Numerator [x] ]
/
Expand [ Denominator [x] ]
End [ ] Null
Этот пример настолько прост, что читателю будет нетрудно разобраться с его сутью – расширением выражения по числителю и знаменателю. Ниже представлен сеанс работы с этим пакетом, файл которого expboth.m размещен в каталоге mypack, включенном в общий каталог пакетов расширений:
<
<
mypack\expboth.m
?ExpandBoth
ExpandBoth [e] expands all numerators and denominators
in
e.
ExpandBoth [
124
/
12
]
31
/
3
ExpandBoth [
1234
/
12
]
617
/
6
Мы вернемся к рассмотрению построения пакетов расширений после более детального рассмотрения некоторых деталей этого процесса.