packages feed

hiccup-0.2: example.tcl

# Here is an example of some stuff hiccup can do.
# I think it's neat.

proc incr v {
  upvar 1 loc $v
  set loc [+ $loc 1]
}

proc decr v {
  upvar loc $v
  set loc [- $loc 1]
}

proc memfib x {
  set loc {1 1}
  set ctr 2
  while { <= $ctr $x } {
    set v1 [lindex $loc [- $ctr 1]]
    set v2 [lindex $loc [- $ctr 2]]
    set sum [+ $v1 $v2]
    set loc "$loc $sum"
    incr ctr
  }
  return [lindex $loc $x]
}

set fcount 21
puts "First $fcount fibonacci numbers in descending order:"
while {<= 2 $fcount} {
  puts -nonewline "[memfib $fcount] "
  decr fcount
}
puts "\nDone."

proc foreach {vname lst what} {
  set i 0
  while {< $i [llength $lst]} {
    uplevel "set $vname [lindex $lst $i]"
    uplevel $what
    incr i
  }
}


foreach name {Spain China Russia Argentina} {
  puts "I've never been to $name."
}