Abstrasy
2.0 (beta)

Piste: • swap!!
 

swap!!

swap!! permet de permuter le contenu de deux cellules d'indirection «ref». Il s'agit d'un opérateur d'affectation qui produit un effet de bord.


La forme générale de swap!! est la suivante:

(swap!! <ref1> <ref2>)


La permutation doit respecter la règle du type dynamique fort. Cela signifie qu'il n'est pas possible de permuter des cellule qui contiennent des valeurs de types différents.

(define '$a 0)
(define '$b 1)
(swap!! $a $b)
(display "$a = " $a)
(display "$b = " $b)

⇒

$a = 1
$b = 0

Il est toutefois possible de permuter le contenu des cellule indépendamment du type si au moins une des deux contient (nothing).

(define '$a 0)
(define '$b (nothing))
(swap!! $a $b)
(display "$a = " $a)
(display "$b = " $b)

⇒

$a = (nothing)
$b = 0

Attention, notez que swap!! n'est pas une opération atomique. Elle ne devrait pas être utilisée dans une section critique sans synchronisation.

refs/lang/opindex/swap.txt · Dernière modification: 2014/02/17 14:59 (modification externe)

Retour
Table des matières

 

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