Abstrasy
2.0 (beta)

Piste: • define
 

define

L'opérateur define permet de déclarer et d'assigner une valeur à une nouvelle variable.


La forme générale de define est la suivante:

(define 'symbole [<valeur initiale>])


Employer sans valeur initiale, la variable reçoit la valeur par défaut (nothing).

Le type du contenant de la variable est statiquement typé et c'est la forme du symbole qui détermine ce type. Ainsi, si le nom du symbole commence par une lettre, il s'agit d'une nouvelle variable immuable. Pour créer une nouvelle variable mutable, il faut indiquer un nom symbolique commençant par un dollar $. Dans ce cas, une nouvelle cellule d'indirection (type ref) est automatiquement créée et assignée au symbole. La cellule est ensuite affectée par la valeur initiale par défaut ou par celle spécifiée dans l'expression.

Par exemple:

(define 'a)
(define '$b 10)
(display "a = " a)
(display "$b = " $b)

⇒

a = (nothing)
$b = 10

Il est important de noter que le symbole doit être quoté. En effet, si ce n'est pas le cas, il est résolu et c'est son contenu qui est utilisé. Il est donc possible de créer et de manipuler des variables de variables.

(define 'var-de-var '$b)
(define var-de-var 10)
(display var-de-var " = " (unquote var-de-var))

⇒

'@$b = 10

Dans cet exemple, on assigne le symbole quoté '$b à la variable var-de-var. Ensuite, on utilise var-de-var dans l'expression define. On utilise donc la valeur de var-de-var qui est le symbole '$b. C'est à ce symbole qu'est lié la cellule d'indirection qui fourni à son tour la valeur 10. Dans la ligne suivante, on en fait la preuve. Pour cela, on évalue la version non quotée du symbole contenu dans var-de-var.

Vous constatez peut-être qu'un arobase est ajouté devant le nom symbolique. En réalité, se préfixe indique qu'il s'agit d'un symbole. Rappelons que '@$b est identique à '$b. L'arobase préfixe le symbole de manière à lever toute ambiguïté dans l'éventualité où le nom symbolique serait le même que celui d'un mot réservé du langage. Par exemple, @define est un symbole dont le nom est «define», il ne s'agit pas de l'opérateur define.

refs/lang/opindex/define.txt · Dernière modification: 2013/05/03 10:41 (modification externe)

Retour
Table des matières

 

     
Licence Creative Commons
   Get abstrasy at SourceForge.net. Fast, secure and Free Open Source software downloads