12
DYALOG APL DYALOG APL 2006 2006 NameSpaces et Fonctions Dynamiques : L’apport de Dyalog APL 91, rue du Fb St Honoré 75008 PARIS tél. : 01 44 71 35 20 Fax : 01 42 66 15 60 http://www.dyalog.com - http://www.quantys.fr

DYALOG APL 2006 NameSpaces et Fonctions Dynamiques : Lapport de Dyalog APL 91, rue du Fb St Honoré 75008 PARIS tél. : 01 44 71 35 20 Fax : 01 42 66 15

Embed Size (px)

Citation preview

Page 1: DYALOG APL 2006 NameSpaces et Fonctions Dynamiques : Lapport de Dyalog APL 91, rue du Fb St Honoré 75008 PARIS tél. : 01 44 71 35 20 Fax : 01 42 66 15

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

Page 2: DYALOG APL 2006 NameSpaces et Fonctions Dynamiques : Lapport de Dyalog APL 91, rue du Fb St Honoré 75008 PARIS tél. : 01 44 71 35 20 Fax : 01 42 66 15

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| | || || ... | | | |----| |-----|| || | | |-------------------| ||----------------------| |-----------------------|

Page 3: DYALOG APL 2006 NameSpaces et Fonctions Dynamiques : Lapport de Dyalog APL 91, rue du Fb St Honoré 75008 PARIS tél. : 01 44 71 35 20 Fax : 01 42 66 15

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 .. ##

Page 4: DYALOG APL 2006 NameSpaces et Fonctions Dynamiques : Lapport de Dyalog APL 91, rue du Fb St Honoré 75008 PARIS tél. : 01 44 71 35 20 Fax : 01 42 66 15

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

Page 5: DYALOG APL 2006 NameSpaces et Fonctions Dynamiques : Lapport de Dyalog APL 91, rue du Fb St Honoré 75008 PARIS tél. : 01 44 71 35 20 Fax : 01 42 66 15

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.

Page 6: DYALOG APL 2006 NameSpaces et Fonctions Dynamiques : Lapport de Dyalog APL 91, rue du Fb St Honoré 75008 PARIS tél. : 01 44 71 35 20 Fax : 01 42 66 15

Dyalog APL

NameSpaces : Exemple

•La Chose …

Page 7: DYALOG APL 2006 NameSpaces et Fonctions Dynamiques : Lapport de Dyalog APL 91, rue du Fb St Honoré 75008 PARIS tél. : 01 44 71 35 20 Fax : 01 42 66 15

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

Page 8: DYALOG APL 2006 NameSpaces et Fonctions Dynamiques : Lapport de Dyalog APL 91, rue du Fb St Honoré 75008 PARIS tél. : 01 44 71 35 20 Fax : 01 42 66 15

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.

Page 9: DYALOG APL 2006 NameSpaces et Fonctions Dynamiques : Lapport de Dyalog APL 91, rue du Fb St Honoré 75008 PARIS tél. : 01 44 71 35 20 Fax : 01 42 66 15

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.

Page 10: DYALOG APL 2006 NameSpaces et Fonctions Dynamiques : Lapport de Dyalog APL 91, rue du Fb St Honoré 75008 PARIS tél. : 01 44 71 35 20 Fax : 01 42 66 15

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.

Page 11: DYALOG APL 2006 NameSpaces et Fonctions Dynamiques : Lapport de Dyalog APL 91, rue du Fb St Honoré 75008 PARIS tél. : 01 44 71 35 20 Fax : 01 42 66 15

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

Page 12: DYALOG APL 2006 NameSpaces et Fonctions Dynamiques : Lapport de Dyalog APL 91, rue du Fb St Honoré 75008 PARIS tél. : 01 44 71 35 20 Fax : 01 42 66 15

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