Posted to tcl by aspect at Thu Mar 19 01:05:34 GMT 2015view raw

  1. proc threet {} {
  2. tailcall ::foreach _ {1 2 3} {puts t:[incr three]}
  3. }
  4.  
  5. proc threeu {} {
  6. uplevel 1 [list ::foreach _ {1 2 3} {puts u:[incr three]}]
  7. }
  8.  
  9. proc aa {} {
  10. threet
  11. threeu
  12. expr {$three == 6}
  13. }
  14.  
  15. puts aa:[aa] ;# aa:1 - as expected
  16.  
  17. namespace eval ens {
  18. namespace ensemble create
  19. }
  20. namespace ensemble configure ens -map {threet ::threet threeu ::threeu}
  21.  
  22. proc ab {} {
  23. ens threet
  24. ens threeu
  25. expr {$three == 6}
  26. }
  27.  
  28. puts ab:[ab] ;# ab:1 - as expected
  29.  
  30. set map [namespace ensemble configure array -map]
  31. dict set map threet ::threet
  32. dict set map threeu ::threeu
  33. namespace ensemble configure array -map $map
  34.  
  35. proc ac {} {
  36. array threet
  37. array threeu
  38. expr {$three == 6}
  39. }
  40.  
  41. puts ac:[ac] ;# "ac:" - explain that!
  42.  
  43. if 0 {
  44. # full output:
  45. t:1
  46. t:2
  47. t:3
  48. u:4
  49. u:5
  50. u:6
  51. aa:1
  52. t:1
  53. t:2
  54. t:3
  55. u:4
  56. u:5
  57. u:6
  58. ab:1
  59. u:1 *
  60. u:2 *
  61. u:3 *
  62. t:1 *
  63. t:2 *
  64. t:3 *
  65. ac: *
  66. }
  67.