Provided by: tcl9.0-doc_9.0.2+dfsg-1_all bug

NAME

       lseq - Build a numeric sequence returned as a list

SYNOPSIS

       lseq start ?(..|to)? end ??by? step?
       lseq start count count ??by? step?
       lseq count ?by step?
________________________________________________________________________________________________________________

DESCRIPTION

       The  lseq  command  creates  a  sequence of numeric values, which may be either wide integers or doubles,
       using the given parameters start, end, and step. The operation argument ".." or "to" defines  the  range.
       The  "count"  option is used to define a count of the number of elements in the list. A short form use of
       the command, with a single count value, will create a range from 0 to count-1.

       The lseq command can produce both increasing and decreasing  sequences.  When  both  start  and  end  are
       provided  without  a step value, then if start <= end, the sequence will be increasing and if start > end
       it will be decreasing. If a step vale is included, it's sign should  agree  with  the  direction  of  the
       sequence  (descending  →  negative  and  ascending → positive), otherwise an empty list is returned.  For
       example:

                     % lseq 1 to 5    ;# increasing
                      1 2 3 4 5

                     % lseq 5 to 1    ;# decreasing
                      5 4 3 2 1

                     % lseq 0 0.5 by 0.1  ;# doubles
                      0.0 0.1 0.2 0.3 0.4 0.5

                     % lseq 6 to 1 by 2   ;# decreasing, step wrong sign, empty list

                     % lseq 1 to 5 by 0   ;# all step sizes of 0 produce an empty list

       The numeric arguments, start, end, step, and count, may also be a valid expression. The  expression  will
       be  evaluated and the numeric result will be used.  An expression that does not evaluate to a number will
       produce an invalid argument error.

       Start defines the initial value and end defines the limit, not necessarily the last value. lseq  produces
       a list with count elements, and if count is not supplied, it is computed as:

                     count = int( (end - start + step) / step )

EXAMPLES

              lseq 3
               0 1 2

              lseq 3 0
               3 2 1 0

              lseq 10 .. 1 by -2
               10 8 6 4 2

              set l [lseq 0 -5]
               0 -1 -2 -3 -4 -5

              foreach i [lseq [llength $l]] {
                  puts l($i)=[lindex $l $i]
              }
               l(0)=0
               l(1)=-1
               l(2)=-2
               l(3)=-3
               l(4)=-4
               l(5)=-5

              foreach i [lseq {[llength $l]-1} 0] {
                  puts l($i)=[lindex $l $i]
              }
               l(5)=-5
               l(4)=-4
               l(3)=-3
               l(2)=-2
               l(1)=-1
               l(0)=0

              set i 17
                        17
              if {$i in [lseq 0 50]} { # equivalent to: (0 <= $i && $i <= 50)
                  puts "Ok"
              } else {
                  puts "outside :("
              }
               Ok

              set sqrs [lmap i [lseq 1 10] { expr {$i*$i} }]
               1 4 9 16 25 36 49 64 81 100

SEE ALSO

       foreach(3tcl),  list(3tcl),  lappend(3tcl),  lassign(3tcl),  lindex(3tcl),  linsert(3tcl), llength(3tcl),
       lmap(3tcl),  lpop(3tcl),  lrange(3tcl),  lremove(3tcl),  lreplace(3tcl),  lreverse(3tcl),  lsearch(3tcl),
       lset(3tcl), lsort(3tcl)

KEYWORDS

       element, index, list

Tcl                                                    9.0                                            lseq(3tcl)