Provided by: tcllib_1.21+dfsg-1_all bug

NAME

       lazyset - Lazy evaluation

SYNOPSIS

       package require Tcl  8.5

       package require lazyset  ?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