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


       lazyset - Lazy evaluation


       package require Tcl  8.5

       package require lazyset  ?1?

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



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


       ::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.


                ::lazyset::variable page {apply {{name} {
                   package require http
                   set token [http::geturl]
                   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(

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

                puts $simple


       Roy Keene


       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
       [].  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.




       Copyright (c) 2018 Roy Keene