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.