Provided by: tcllib_2.0+dfsg-2_all bug

NAME

       lazyset - Lazy evaluation

SYNOPSIS

       package require Tcl 8.5 9

       package require lazyset ?1.1?

       ::lazyset::variable ?-array boolean? ?-appendArgs boolean? variableName commandPrefix

________________________________________________________________________________________________________________

DESCRIPTION

       The lazyset package provides a mechanism for deferring execution of code until a specific variable or any
       index of an array is referenced.

COMMANDS

       ::lazyset::variable ?-array boolean? ?-appendArgs boolean? variableName commandPrefix
              Arrange  for  the  code  specified as commandPrefix to be executed when the variable whose name is
              specified by variableName is read for the first time.  If the optional argument -array boolean  is
              specified  as  true,  then  the  variable  specified  as  variableName  is treated as an array and
              attempting to read any index of the array causes that index to be set by the commandPrefix as they
              are read.  If the optional argument -appendArgs boolean is specified as false, then  the  variable
              name  and  subnames are not appended to the commandPrefix before it is evaluated.  If the argument
              -appendArgs boolean is not specified or is specified as true then 1 or 2 additional arguments  are
              appended  to  the  commandPrefix.   If  -array  boolean is specified as true, then 2 arguments are
              appended corresponding to the name of the variable and the index, otherwise 1 argument is appended
              containing the name of variable.  The commandPrefix code is run in the same scope as the  variable
              is read.

EXAMPLES

                ::lazyset::variable page {apply {{name} {
                   package require http
                   set token [http::geturl http://www.tcl.tk/]
                   set data [http::data $token]
                   return $data
                }}}

                puts $page

                ::lazyset::variable -array true page {apply {{name index} {
                   package require http
                   set token [http::geturl $index]
                   set data [http::data $token]
                   return $data
                }}}

                puts $page(http://www.tcl.tk/)

                ::lazyset::variable -appendArgs false simple {
                   return -level 0 42
                }

                puts $simple

AUTHORS

       Roy Keene

BUGS, IDEAS, FEEDBACK

       This  document,  and  the package it describes, will undoubtedly contain bugs and other problems.  Please
       report such in the  category  utility  of  the  Tcllib  Trackers  [http://core.tcl.tk/tcllib/reportlist].
       Please also report any ideas for enhancements you may have for either package and/or documentation.

       When proposing code changes, please provide unified diffs, i.e the output of diff -u.

       Note  further  that  attachments  are strongly preferred over inlined patches. Attachments can be made by
       going to the Edit form of the ticket immediately after its creation, and then using the left-most  button
       in the secondary navigation bar.

CATEGORY

       Utility

COPYRIGHT

       Copyright (c) 2018 Roy Keene

tcllib                                                 1.1                                         lazyset(3tcl)