Средства создания пакетов расширений
Для создания пакетов расширений в общем случае используются следующие средства системы:
- 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/3ExpandBoth [1234/12] 617/6Мы вернемся к рассмотрению построения пакетов расширений после более детального рассмотрения некоторых деталей этого процесса.
