Posted to tcl by mjanssen at Wed Aug 26 16:26:57 GMT 2009view pretty

proc filter {list proc} {
  puts $list
  set result {}
  foreach element $list {if {![$proc $element]} {lappend result $element}}
  return $result
} 

proc alive server {
  return [ping $server]
}

proc ping {a} {if {$a eq "localhost"} {return 1} else {return 0}
}

set servers {localhost localhost localhost abcd}

while {[llength [set servers [filter $servers alive]]]>0 && [incr retry] < 4} {}