[Richard Suchenwirth] 2002-12-16 - For people experienced in other languages, it may be interesting to compare code snippets between [Tcl and other languages], to demonstrate similarities and differences. Please add more from your experience! '''[C]''' void countdown(int n) { | proc countdown {n} { int i; | for(i=n; i>0; i--) { | for {set i $n} {$i>0} {incr i -1} { printf("%d...\n", i); | puts $i... } | } } | } * Everything is a command in Tcl. Function definitions are done with the [proc] command, assignments with the [set] command, in/decrementation of integers with the [incr] command. * Retrieving the value of a variable goes with prefixed $ sign - while mentioning the name of a variable it is not used * Variable type rarely matters and is not declared. Only [incr] would complain if its first argument is not an integer * Formatting values into strings goes in simple cases by straight string concatenation like in $i.... for stronger control, [format] is comparable to ''sprintf'' * [puts], unlike ''printf()'', needs no explicit newline. '''[Scheme]''' (define foo 42) | set foo 42 (define (square x) (* x x)) | proc square x {expr $x * $x} * Functions are also defined with the [proc] command. Thier result is the last executed command in the body * Arithmetics is not done with prefix functions, but Infix-style like in C, in the argument(s) to the [expr] command * [set] is used for variables, [proc] for functions - no unified ''define'' in Tcl (execept if you write one -see the [Scheme] page ;-)