Monolignes

 

Richard Suchenwirth 2007-03-28 - Voilà une collection de procédures tout petites, consistant d'une seule ligne, mais d'une certaine utilité :)

Simplification de interp alias:

 proc alias {name args} {eval [linsert $args 0 interp alias {} $name {}]}

Répétition d'une action:

 proc every {ms body} {eval $body; after $ms [info level 0]}

Voir si un élément est en une liste (avec 8.5, on utiliserait l'opérateur in):

 proc in {list el} {expr {[lsearch -exact $list $el]>=0}}

Combinateur K, pour préserver un résultat intermédiaire (Exemple: voir readfile en bas)

 proc K {a b} {set a}

Retirer certains éléments d'une liste:

 proc lfilter {el list} {lsearch -all -inline -exact -not $list $el}

Choisir au hasard un élément d'une liste:

 proc lpick list {lindex $list [expr {int(rand()*[llength $list])}]}

Minimum arithmétique:

 proc min args {lindex [lsort -real $args] 0}

Lire un fichier de texte en un coup (nécessite le Combinateur K plus haut):

 proc readfile name {K [read [set f [open $name]]] [close $f]}

Signe d'un nombre:

 proc sgn x {expr {($x>0)-($x<0)}}

Formatteur XML, avec example:

 proc < {name args} {return <$name>[join $args ""]</$name>}

 % < foo [< bar 42] [< grill 123]
 <foo><bar>42</bar><grill>123</grill></foo>

Voir aussi simplicité


Kroc 28 Mars 2007 - J'avais déjà présentée lfilter sous le nom de lremove : http://wfr.tcl.tk/fclt/index.php?group=1&id=766