Upload
celeste-lamy
View
102
Download
0
Embed Size (px)
Citation preview
DYALOG APL DYALOG APL 20062006
NameSpaces et Fonctions Dynamiques : L’apport de
Dyalog APL
91, rue du Fb St Honoré75008 PARIS
tél. : 01 44 71 35 20Fax : 01 42 66 15 60
http://www.dyalog.com - http://www.quantys.fr
Dyalog APL
NameSpaces : Définitions• Un Namespace est un objet de classe 9 en Dyalog APL, tout
comme les objets graphiques. On peut considérer les Namespaces comme des workspaces généralisés.
• Workspace « plat » Workspace avec Namespaces|----------------------| |-----------------------|| | | FOO MAT VEC || DISPLAY | | |Util----------| || | | | DISPLAY | || FOO MAT VEC | | |... | || | | |--------------| || WsDoc_Init | | |WsDoc--------------| || WsDoc_Xref | | |Init |prt-| |fmt--|| || WsDoc_Tree | | | |Init| |line || || WsDoc_prt_init | | |Tree | | | || || WsDoc_current_page | | |Xref |page| | || || ... | | | |----| |-----|| || | | |-------------------| ||----------------------| |-----------------------|
Dyalog APL
NameSpaces : Définitions• Les Namespaces sont aux workspaces ce que le
système des répertoires est au classement de fichiers sur disques. Ont peut d’ailleurs en faire une comparaison intéressante :
Opération MS-DOS Namespace
Création MKDIR )NS ou ŒNS
Changer de répertoire
CD )CS or ŒCS
Chemin Relatif DIR1\DIR2\FILE NS1.NS2.OBJ
Chemin Absolu \DIR\FILE #.NS.OBJ
Séparateur de noms \ .
Racine \ #
Niveau supérieur .. ##
Dyalog APL
NameSpaces : Avantages
• Ils permettent d’avoir des variables locales statiques. Alors que les variables localisées dans les fonctions disparaissent quand on quitte la fonction, les globales permettent de conserver des états.
• Tout comme le système de répertoires, les namespaces permettent de classer les fonctions dans le workspace.
• On peut par exemple sauvegarder les fonctions utilitaires dans un namespace dédié en laissant en surface uniquement les fonctions propres à l’application, ce qui évite de leur donner un préfixe destiné à distinguer les 2 types de fonctions.
• La programmation des interfaces graphiques est sensiblement simplifiée :
– Les fonctions callback et les objets peuvent être hébergés dans le même namespace.
– Les variables statiques utilisées par les fonctions callback pour stocker un état entre 2 appels peuvent également y être stockées
Dyalog APL
NameSpaces : Quelques exemples de syntaxes
WSDOC.PAGE.NO + 1 Incrémente le nombre de pages de WSDOC
#.ŒNL 2 Variables de l’espace racine.
UTIL.ŒFX ZDUP A ZA A Fix remote function.
UTIL.(ŒEX ŒNL 2) Efface les variables du ns UTIL
(œŒSE #).(–œ‡ŒNL 9).(ŒNL 2) Variables du premier namespace de ŒSE.
UTIL.–STRING Exécute la chaîne STRING dans le ns UTIL.
A „ X.Y.DUP MAT A reçoit le résultat de la fonction DUP appliquée à MAT du ns courant.
Dyalog APL
NameSpaces : Exemple
•La Chose …
Dyalog APL
Fonctions Dynamiques : Définitions
• Les fonctions dynamiques offrent une nouvelle alternative pour écrire des petites ou moyennes fonctions.
• Dans sa forme la plus simple, une fonction dynamique est une expression APL entre accolades pouvant comporter les caractères réservés ¸ et ¾ pour représenter les arguments gauche et droit. Par exemple :
• {(+/¾)÷½¾} 1 2 3 4 © Moyenne Arithmétique2.5
• 3 {¾*÷¸} 64 © racine Cubique4
Dyalog APL
Fonctions Dynamiques : Définitions
• Les fonctions dynamiques peuvent également être nommées, tel que ci-dessous :
• moyenne„{(+/¾)÷½¾}
• moyenne¨(2 3)(4 5) 2.5 4.5
• Les fonctions dynamiques peuvent être définies et utilisées comme n’importe quelle fonction, notamment :– En exécution immédiate, comme ci-dessus.– A l’intérieur d’une fonction ou d’un opérateur définis.– Comme l’opérande d’un opérateur, comme le each (¨).– A l’intérieur d’une autre fonction dynamique.
• L’espace DFNS.DWS, fourni en standard, contient de nombreux exemples pratiques de fonctions dynamiques.
Dyalog APL
Fonctions Dynamiques : Définitions
• Fonctions dynamiques multi-lignes
• Le texte d’une fonction dynamique peut comporter plusieurs lignes.• Le résultat d’une fonction dynamique est donné par la première expression sans
affectation.• Toutes les variables de la fonction dynamique sont automatiquement localisées.
• Ainsi, dans l’exemple suivant, les expressions sum„ et num„ créent les variables locales sum et num.
• moyenne„{ © Moyenne Arithmétique somme„+/¾ © Somme des éléments nb„½¾ © Nombre d’éléments somme÷nb © Moyenne }
• Il est important de bien distinguer les deux types de lignes de cette fonction. Il peut y avoir autant de traitements d’affectation que nécessaire, ceux-ci créant des nouvelles variables locales, mais dès qu’une expression sans affectation est rencontrée par l’interpréteur, sont résultat est immédiatement retourné en tant que résultat de la fonction.
Dyalog APL
Fonctions Dynamiques : Définitions
• Garde : expression booléenne scalaire suivie à droite par un ':'. Par exemple :
• ¸<0: © argument gauche négatif
• Le garde est suivi par une simple expression APL : le résultat de la fonction.
• ¾‰0: ¾*0.5 © Racine carrée si nombre positif
• Une fonction dynamique peut contenir n’importe quel nombre de gardes. Ils sont tous évalués jusqu’à ce qu’un des tests donne un. Dans ce cas, le résultat de la fonction est celui de la deuxième partie de la ligne.
Dyalog APL
Fonctions Dynamiques : Pourquoi ?
• Contrairement aux autres fonctions, les fonctions dynamiques ne sont évaluées qu’une fois par l’interpréteur, alors que classiquement chaque ligne est évaluée avant d’être exécutée, d’où un gain de vitesse très important quand on passe plusieurs fois sur une ligne.
• Ils permettent d’alléger l’écriture, notamment en diminuant le nombre de each
Dyalog APL
Fonctions Dynamiques : Exemples.
• Contrairement aux autres fonctions, les fonctions dynamiques ne sont évaluées qu’une fois par l’interpréteur, alors que classiquement chaque ligne est évaluée avant d’être exécutée, d’où un gain de vitesse très important quand on passe plusieurs fois sur une ligne ou si on appelle plusieurs fois la fonction.
• Ils permettent d’alléger l’écriture, notamment en diminuant le nombre de each