Le principal intérêt des domaines informatiques est la surcharge
automatique. Ils permettent aussi de
définir un ensemble de fonctions séparément du reste de MuPAD.
C'est d'ailleurs comme cela que sont définies les bibliothèques
de MuPAD ; les fonctions du module d'intégration ont un nom de la
forme intlib::xxx.
Un nouveau domaine est créé par domain, et un élément d'un
domaine par new. La commande extop accède aux
opérandes d'un élément de domaine.
d := domain("d"):
e := new(d, "bernard", {Mathematica, MuPAD});
extop(e, 1);
d::print := proc(x) begin extop(x,1) = extop(x,2) end_proc:
f := new(d, "paul", {MuPAD, MuPAD});
d::_union := proc(x,y) begin new(d,extop(x,1)."+".extop(y,1),
extop(x,2) union extop(y,2)) end_proc:
e union f;
Seules les procédures du noyau MuPAD sont automatiquement surchargées,
comme _union ci-dessus.
Pour les procédures définies en MuPAD, il faut explicitement les
surcharger.
systemes := proc(x) begin
if x::systemes<>FAIL then
return(x::systemes(args(1..args(0)))) end_if;
procname(x)
end_proc:
systemes(e);
d::systemes := proc(x) begin extop(x,2) end_proc:
systemes(e);
Là encore, on trouvera de plus amples détails dans le document
dom-pack de l'aide en ligne hypertexte.