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