Abstrasy
2.0 (beta)

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